ยังมีเหตุผลอะไรที่จะต้องเรียนรู้ AWK?


109

ฉันเรียนรู้เครื่องมือใหม่ ๆ อยู่ตลอดเวลาแม้แต่เครื่องมือเก่า ๆ เพราะฉันชอบใช้วิธีแก้ปัญหาที่เหมาะสม

อย่างไรก็ตามฉันสงสัยว่ายังมีเหตุผลอะไรที่จะต้องเรียนรู้บางอย่าง awkตัวอย่างที่น่าสนใจกับผม แต่สำหรับการประมวลผลข้อความที่เรียบง่ายฉันจะสามารถใช้grep, cut, sedฯลฯ ในขณะที่สำหรับคนที่ซับซ้อนฉันจะไปสำหรับงูหลาม

ตอนนี้ฉันไม่ได้หมายความว่านั่นไม่ใช่เครื่องมือที่ทรงพลังและมีประโยชน์ แต่เนื่องจากต้องใช้เวลาและแรงในการเรียนรู้เครื่องมือใหม่จึงคุ้มค่าหรือไม่?


2
เป็นปี 2019 และฉันเพิ่งเขียน python log normalizer ใหม่ใน awk ฉันรันการแปลงไฟล์หนึ่งสัปดาห์ซึ่งเป็นไฟล์บันทึก 54 ล้านบรรทัด (~ 9GB) บน Macbook Pro ของฉัน (2.8 GHZ i7, 16 GB Ram) เวอร์ชัน python สามารถประมวลผล ~ 10k บรรทัดต่อวินาที => 90 นาทีของรันไทม์ ใช้ mawk เวลาวิ่งลดลงเหลือ 2 นาที Btw โปรแกรม awk มีขนาดครึ่งหนึ่ง
mistahenry

@mistahenry คุณลอง pypy ไหม?
qwr

คำตอบ:


97

ฉันคิดว่ามันขึ้นอยู่กับสภาพแวดล้อมที่คุณพบว่าตัวเองอยู่ถ้าคุณเป็นคน * nix การรู้ว่าawkเป็นสิ่งที่ดี เพียงสภาพแวดล้อมสคริปต์อื่น ๆ ที่สามารถพบได้ในแทบทุกระวัง * shคือ ดังนั้นในขณะที่grep, sed,ฯลฯ ก็สามารถแทนที่awkบนหลักที่ทันสมัยlinuxdistro เมื่อคุณย้ายไปยังระบบแปลกใหม่มากขึ้นรู้เล็ก ๆ น้อย ๆawkเป็นไปได้จริงมีประโยชน์

awkยังสามารถใช้สำหรับการประมวลผลข้อความได้มากกว่า ตัวอย่างหนึ่งของผู้บังคับบัญชาของฉันเขียนรหัสดาราศาสตร์ในawk- ว่าเป็นวิธีการอย่างเต็มที่โรงเรียนเก่าและน่ากลัวเขาเป็น ย้อนกลับไปในสมัยของเขามันเป็นเครื่องมือที่ดีที่สุดสำหรับงานนี้ ... และตอนนี้แม้ว่านักเรียนของเขาอย่างฉันจะใช้งูหลาม แต่เขาก็ยึดติดกับสิ่งที่เขารู้และทำงานได้ดี

ในการปิดท้ายมีโค้ดเก่า ๆ มากมายที่เกิดขึ้นทั่วโลกการรู้เพียงเล็กน้อยawkจะไม่เจ็บ นอกจากนี้ยังจะทำให้คุณดีขึ้น * nix คน :-)


12
++ เห็นด้วย awk เป็นหนึ่งในเครื่องมือที่พกพาสะดวกที่สุดและที่สำคัญคือเครื่องมือที่สอดคล้องกันในชุดเครื่องมือ * nix มันทำงานได้อย่างน่าเชื่อถือบน busybox ตัวอย่างเช่นในกรณีที่ไม่พบ perl
ปืน

1
และมันก็ไม่ยากที่จะเรียนรู้เช่นกันถ้าคุณคุ้นเคยกับภาษาปีกกา
ปืน

2
"มันเหมือนกันในทุกสภาพแวดล้อม" - ไม่มาก: ภายใต้เครื่องหมายคำพูดเดี่ยวของ Windows จะต้องถูกแทนที่ด้วย double, s และ internal doubles (Windows เป็นสภาพแวดล้อมที่แท้จริงแม้ว่าการเปิดเผยตัวเองให้เห็นถึงความโหดร้ายที่ไม่ปลอดภัยครึ่งหนึ่งของเรดมอนด์จะทำให้คุณได้รับความเมตตาจากรัสเซียอายุ 15 ปีก็ตาม)
GT.

6
ฉันไม่คิดว่าหลาย ๆ คนเชื่อมโยงการมีอยู่ของ awk และ windows ในจักรวาลเดียวกัน ..... : P
FoldedChromatin

2
ยังคงใช้ awk สำหรับงานประมวลผลข้อความ ฉันมักจะเริ่มสคริปต์ด้วยสิ่งอื่น (ทับทิมหลาม) และกลับไปที่ awk เพื่อความเรียบง่ายและทรงพลัง
Rumbleweed

104

หากคุณเรียนรู้พื้นฐานของ awk อย่างรวดเร็วคุณสามารถทำสิ่งที่น่าทึ่งได้ในบรรทัดคำสั่ง

แต่เหตุผลที่แท้จริงในการเรียนรู้ awk คือการมีข้ออ้างในการอ่านหนังสือที่ยอดเยี่ยมThe AWK Programming Languageโดยผู้เขียน Aho, Kernighan และ Weinberger คุณจะคิดว่าจากชื่อมันสอนให้คุณตื่นขึ้น ที่จริงนั่นเป็นเพียงจุดเริ่มต้น การเปิดตัวสู่ปัญหามากมายที่สามารถแก้ไขได้เมื่อมีการใช้ภาษาสคริปต์ที่กระชับซึ่งทำให้การจัดการสตริงทำได้ง่ายและ awk เป็นหนึ่งในคนแรก ๆ ที่สอนวิธีการใช้ฐานข้อมูลตัวแยกวิเคราะห์ล่ามแก่ผู้อ่าน และ (ถ้าหน่วยความจำให้บริการฉัน) คอมไพเลอร์สำหรับภาษาคอมพิวเตอร์เฉพาะโครงการขนาดเล็ก! หากเพียง แต่พวกเขาตั้งโปรแกรมระบบปฏิบัติการตัวอย่างโดยใช้ awk หนังสือเล่มนี้จะเป็นบทแนะนำการสำรวจเกี่ยวกับวิทยาการคอมพิวเตอร์ที่ค่อนข้างสมบูรณ์!

มีชื่อเสียงชัดเจนและกระชับเช่นเดียวกับหนังสือภาษาซีต้นฉบับนอกจากนี้ยังเป็นตัวอย่างที่ยอดเยี่ยมของการเขียนเชิงเทคนิคที่เป็นมิตรที่ถูกต้อง แม้แต่ดัชนีก็เป็นงานฝีมือชิ้นหนึ่ง

อั๊ว? ถ้าคุณรู้คุณจะใช้มันในบรรทัดคำสั่งเป็นครั้งคราว แต่สำหรับสิ่งที่ใหญ่กว่าคุณจะรู้สึกติดกับดักไม่สามารถเข้าถึงคุณสมบัติที่กว้างขึ้นของระบบของคุณและอินเทอร์เน็ตที่บางอย่างเช่น Python ให้การเข้าถึง แต่หนังสือ? คุณจะดีใจที่ได้อ่านเสมอ!


5
+1 ขายแล้ว ฉันกำลังจะสั่งซื้อหนังสือเล่มนี้ ฉันใช้ awk มาหลายปีแล้วเป็นภาษาสคริปต์ซับเดียวที่รวดเร็วและทรงพลัง Awk เป็นตัวประมวลผลล่วงหน้าที่ยอดเยี่ยมสำหรับไฟล์ที่จะต้องใช้โค้ดเป็นโหล ฉันไม่สามารถนับจำนวนครั้งที่ฉันใช้แบบฟอร์ม: awk '{print $ 1, $ 2}'
galaxywatcher

2
เห็นด้วย เกือบจะท้าทายความเชื่อว่าหนังสือเล่มนี้มีขนาดกะทัดรัดเพียงใด ครอบคลุมมากกว่าหนังสือร่วมสมัยส่วนใหญ่ที่มีความยาว 1/10 (?)
ดิน

3
ตอนนี้ฉันกำลังอ่านหนังสือเล่มนี้และมันทำให้ความกระตือรือร้นของฉันเพิ่มขึ้นเรื่อย ๆ จนถึงขั้นหลงใหล
galaxywatcher

3
เห็นแล้วยังยอดเยี่ยมเพ่งพิศ: การเขียนโปรแกรมที่มีประสิทธิภาพ
lhf

1
ฉันเพิ่งอ่านบทแรก เป็นที่น่าอัศจรรย์ Mistery ได้รับการแก้ไข
vaichidrewar

29

เหตุผลเดียวที่ฉันใช้awkคือการแยกอัตโนมัติ:

awk '{print $3}' < file.in

file.inนี้จะพิมพ์ฟิลด์ช่องว่างที่คั่นสามใน ง่ายกว่า:

tr -s ' ' < file.in | cut -d' ' -f3

3
ทำไมต้องใช้awk '{print $3}' < file.inแทนawk '{print $3}' file.in? awk ไม่ได้อ่านไฟล์เมื่อส่งผ่านเป็นอาร์กิวเมนต์หรือไม่?
mbigras

@mbigras แน่นอนว่าคุณสามารถใช้ awk ไม่ว่าจะด้วยวิธีใดก็ตาม
Greg Hewgill

แม้จะมีขนาดเป็นสองเท่าฉันก็ชอบวิธีแก้ปัญหาที่ไม่ใช่ awk และฉันไม่รู้ว่าทำไมฉันถึงเกลียดawk: /
นพ. Mohiuddin Ahmed

25

ผมคิดว่า awk ดีมากถ้าไฟล์ของคุณมีคอลัมน์ / เขต ฉันใช้มันเมื่อประมวลผล / วิเคราะห์คอลัมน์ใดคอลัมน์หนึ่งในไฟล์หลายคอลัมน์ หรือถ้าฉันต้องการเพิ่ม / ลบคอลัมน์ใดคอลัมน์หนึ่ง

เช่น

awk -F \t '{ if ($2 > $3) print; }' <filename>

จะพิมพ์ก็ต่อเมื่อค่าคอลัมน์ที่ 2 ในไฟล์ที่แยกแท็บมากกว่าค่าคอลัมน์ที่ 3

แน่นอนว่าฉันสามารถใช้ Perl หรือ Python ได้ แต่ awk ทำให้ง่ายขึ้นมากด้วยคำสั่งบรรทัดเดียวที่กระชับ

นอกจากนี้การเรียนรู้ awk นั้นค่อนข้างมีต้นทุนต่ำ คุณสามารถเรียนรู้พื้นฐาน awk ได้ในเวลาไม่ถึงหนึ่งชั่วโมงดังนั้นจึงไม่ต้องใช้ความพยายามมากเท่ากับการเรียนรู้ภาษาโปรแกรม / สคริปต์อื่น ๆ


แม้ว่าฉันจะไม่ได้ใช้ awk มากนัก แต่นี่เป็นการใช้งานที่ยอดเยี่ยมสำหรับ awk
Paul Nathan

8

ฉันใช้ AWK เป็นครั้งคราวเพื่อจัดการกับ HTML ตัวอย่างเช่นรหัสนี้แปลตารางเป็นไฟล์ csv:

BEGIN {s=""; FS="n"}
/<td/ { gsub(/<[^>]*>/, ""); s=(s ", " $1);}
/<tr|<TR/ { print s; s="" }

ซึ่งจะดีมากหากคุณกำลังขูดหน้าจอ ที่จริงมันอาจจะมีกรณีที่ฉันรัก AWK เพราะมันช่วยให้ฉันเพื่อสร้างวิธีการแก้ปัญหาที่ไม่ถูกต้องในการแก้ไขปัญหาได้อย่างรวดเร็ว :) ตัวอย่างเพิ่มเติม นอกจากนี้ยังกล่าวถึงในจอนเบนท์ลีย์ที่น่ารักไข่มุกเขียนโปรแกรม


7

ฉันใช้ awk บ่อยๆ เป็นการดีสำหรับการสับข้อความที่เรียบง่ายตรงกลางไปป์ไลน์ มันเติมช่องที่แคบมากระหว่างไม่ต้องการเลยและต้องแส้ Perl / Python / อะไรก็ตาม

ฉันจะไม่แนะนำให้คุณใช้เวลากับมันมากนัก แต่การรู้พื้นฐานของไวยากรณ์อาจเป็นประโยชน์อย่างน้อยก็เพียงพอที่คุณจะสามารถศึกษาคู่มือได้อย่างรวดเร็วหากคุณต้องการใช้


5

ส่วนใหญ่ awk one liners สามารถทำได้ด้วย Perl one liners - หากคุณเลือกที่จะเข้าสู่ความคิดของ Perl one liner หรือแค่ใช้ Perl three liners :)

หากคุณกำลังดูแลเชลล์สคริปต์ที่เขียนโดยคนที่ชอบ awk คุณจะต้องเรียนรู้ awk อย่างชัดเจน

แม้ว่าจะไม่มีความจำเป็นในทางปฏิบัติ แต่หากคุณรู้ regex แล้วก็จะใช้เวลาไม่นานในการรับข้อมูลพื้นฐานและมันก็สนุกที่ได้เห็นว่าสิ่งต่างๆได้รับการออกแบบอย่างไร ค่อนข้างสง่างาม


5

6 ปีหลังจากถามคำถามนี้ตอนนี้ฉันสามารถตอบได้อย่างมั่นใจ: ไม่การเรียนรู้ awk นั้นไม่คุ้มค่า

งานพื้นฐานสามารถจัดการได้ แต่คำสั่งทุบตีพื้นฐานหรือแม้แต่เครื่องมือ GUI ได้อย่างง่ายดาย งานที่ซับซ้อนมากขึ้นจะจัดการได้ง่ายด้วยภาษาไดนามิกที่ทันสมัยเช่น Python (fav หรือของฉัน) หรือ Ruby

คุณควรเรียนรู้ภาษาไดนามิกของสคริปต์ที่ทันสมัยอย่างแน่นอนเนื่องจากจะช่วยคุณในงานต่างๆมากมาย (เว็บ, ผู้ดูแลระบบ, การกระทืบข้อมูล, ระบบอัตโนมัติ ฯลฯ ) และด้วยการทำเช่นนั้นการเรียนรู้เครื่องมือเช่น awk ก็ไร้ประโยชน์โดยสิ้นเชิงมันจะช่วยให้คุณประหยัดเวลาไม่กี่วินาทีทุกเดือน


2
ไม่จำเป็นต้องเป็นจริง หากคุณกำลังแยกวิเคราะห์ไฟล์ที่มีขนาดใหญ่มากมันอาจเร็วกว่าเครื่องมืออื่น ๆ มาก
user1071847

น่าสนใจเพราะไม่กี่ปีหลังจากนี้คุณยังคงถามคำถามเกี่ยวกับ awk ฉันเป็นหนึ่งในผู้ตอบโต้ดั้งเดิมและยังคงใช้มันอย่างสม่ำเสมอจนถึงทุกวันนี้
Dexygen

4

หากคุณรู้จักและใช้ sed อยู่แล้วคุณก็อาจจะต้องใช้ awk เป็นอย่างน้อย พวกเขาสามารถต่อท่อเข้าด้วยกันสำหรับกลเม็ดที่ทรงพลัง สร้างความประทับใจให้กับผู้พบเห็นเสมอ


4

เมื่อเร็ว ๆ นี้ Computerworld ได้ให้สัมภาษณ์กับ Alfred V.Aho (หนึ่งในสามผู้สร้าง AWK) เกี่ยวกับ AWK เป็นการอ่านที่น่าสนใจทีเดียว บางทีคุณอาจพบคำแนะนำบางอย่างในนั้นทำไมจึงเป็นความคิดที่ดีที่จะเรียนรู้ AWK


ดี แต่ไม่เชื่อฉัน AWK เป็นเครื่องมือที่ดีมาก แต่ฉันคิดว่าฉันไม่ต้องการมันมากพอที่จะใช้เวลาเรียนรู้มันแทนที่จะแฮ็คโซลูชันของฉันใน sed หรือ python
e-satis

4

การเรียนรู้ AWK เป็นสิ่งล้ำค่าสำหรับฉันในสัญญาฉบับสุดท้ายของฉันที่ทำงานกับระบบ Linux แบบฝังซึ่งไม่ได้ติดตั้ง Perl หรือภาษาสคริปต์อื่น ๆ


2
9 ปีต่อมาและฉันใช้ awk มากในวันนี้ในขณะที่ grepping git logs
Dexygen

3

awk มียูทิลิตี้ / ความยากในอัตราส่วนที่ดีมากและ "simple awk" ทำงานได้ในทุก Unix / Linux / MacOS (และสามารถติดตั้งในระบบอื่นได้ด้วย)

ได้รับการออกแบบในยุคทองเมื่อผู้คนเกลียดการพิมพ์ดังนั้นสคริปต์จึงสามารถเขียนได้สั้นและรวดเร็วมาก ฉันจะพยายามติดตั้ง mawk ซึ่งเป็นเวอร์ชันที่รวดเร็วโดยกล่าวหาว่ามันเร่งการคำนวณประมาณ 9 ครั้ง awk / gawk ค่อนข้างช้าดังนั้นหากคุณต้องการใช้แทน R เป็นต้นคุณอาจต้องการ mawk


2

ส่วนใหญ่จะมีประโยชน์ถ้าคุณต้องแยกวิเคราะห์ไฟล์บันทึกเป็นครั้งคราวสำหรับข้อมูลหรือผลลัพธ์ของโปรแกรมในขณะที่ใช้เชลล์สคริปต์เพราะมันง่ายมากที่จะบรรลุใน awk ซึ่งจะทำให้คุณต้องใช้โค้ดเพิ่มขึ้นอีกเล็กน้อยใน python

แน่นอนว่ามันมีพลังมากกว่านั้น แต่ดูเหมือนว่าจะเป็นงานที่คนส่วนใหญ่ใช้


2

แน่นอน: ฉันทำงานในสภาพแวดล้อมที่มีภาษาที่ใช้ได้เท่านั้น: (ภาษา shity บางภาษาที่สร้าง COBOL, OMG, OMG), bash (เวอร์ชันเก่า), perl (ฉันยังไม่ชำนาญ), sed, awk และยูทิลิตี้บรรทัดคำสั่งอื่น ๆ การรู้awkช่วยฉันได้หลายชั่วโมง (และได้สร้างงานประมวลผลข้อความหลายอย่างจากเพื่อนร่วมงานของฉัน - พวกเขามาหาฉันอย่างน้อยวันละสามครั้ง)


1

บอกเลยว่ามันคงไม่คุ้มอีกต่อไป ฉันใช้มันเป็นครั้งคราวเป็นโปรแกรมแก้ไขสตรีมที่หลากหลายมากกว่า sed พร้อมความสามารถในการค้นหา แต่ถ้าคุณเชี่ยวชาญกับ python ฉันไม่รู้ว่างานที่คุณจะสามารถทำมันให้เสร็จเร็วขึ้นมากเพื่อชดเชยเวลาที่จำเป็น เพื่อเรียนรู้ awk

คำสั่งต่อไปนี้อาจเป็นคำสั่งเดียวที่ฉันใช้ awk ในช่วงสองปีที่ผ่านมา (มันจะลบแพ็คเกจครึ่งหนึ่งออกจากระบบ Debian / Ubuntu ของฉัน):

$ dpkg -l|awk '/^rc/ {print $2}'|xargs sudo dpkg -P

1

ไม่

แม้ว่ามันอาจจะน่าสนใจ แต่คุณสามารถทำทุกอย่างที่ awk ทำได้โดยใช้เครื่องมืออื่น ๆ ที่ทรงพลังกว่าเช่น Perl

ใช้เวลาของคุณในการเรียนรู้เครื่องมือที่มีประสิทธิภาพมากขึ้นเหล่านี้ - และบังเอิญได้รับ awk บางอย่างไปพร้อมกัน


1

ฉันจะบอกว่ามี สำหรับเรื่องง่ายๆ AWK นั้นง่ายกว่ามากสำหรับ sysadmin / ผู้พัฒนาที่ไม่มีประสบการณ์มากกว่า Python คุณสามารถเรียนรู้ AWK เล็ก ๆ น้อย ๆ และทำสิ่งต่างๆมากมายการเรียนรู้ Python หมายถึงการเรียนรู้ภาษาใหม่ทั้งหมด (ใช่ฉันรู้ว่า AWK เป็นภาษาที่มีความหมายเช่นกัน)

Perl อาจทำหลายสิ่งหลายอย่างที่ AWK ทำได้ แต่เสนอทางเลือกในวันนี้และอายุฉันจะเลือก Python ที่นี่ ใช่คุณควรเรียนรู้ AWK แต่เรียนรู้ Python ด้วย :-)


1

awkเป็นภาษา Powertool ดังนั้นคุณน่าจะพบว่าawkมีการใช้งานที่ไหนสักแห่งหากคุณเป็นผู้เชี่ยวชาญด้านไอทีทุกประเภท ถ้าคุณสามารถจัดการกับไวยากรณ์และการแสดงออกของความปกติgrepและsedจากนั้นคุณควรจะมีปัญหายกขึ้นawkและมันอาจจะคุ้มค่าที่จะ

สิ่งที่ฉันพบawkจริงๆคือการทำให้สิ่งต่างๆง่ายขึ้นเช่นการประมวลผลเร็กคอร์ดหลายบรรทัดและการแยกไฟล์ / การแก้ไขหลายไฟล์พร้อมกัน


0

ตอนนี้ PERL ถูกย้ายไปยังทุกแพลตฟอร์มที่สำคัญฉันบอกว่ามันไม่คุ้มค่า มีความหลากหลายมากกว่า sed และ awk ด้วยกัน สำหรับการแยกอัตโนมัติคุณสามารถทำได้ใน perl ดังนี้:

perl -F':' -ane 'print $F[3],"\n";' /etc/passwd

แก้ไข: คุณยังอาจต้องการที่จะค่อนข้างคุ้นเคยกับ awk เพราะบางเครื่องมืออื่น ๆ ที่อยู่บนพื้นฐานของปรัชญาของการดำเนินการรูปแบบ (เช่น DTrace บน Solaris)


0

ฉันทำงานในพื้นที่ไฟล์อยู่ในรูปแบบคอลัมน์ ดังนั้น AWK จึงมีค่ามากสำหรับฉันในการ REFORMAT ไฟล์เพื่อให้ซอฟต์แวร์ต่างๆสามารถทำงานร่วมกันได้ สำหรับอาชีพที่ไม่ใช่ไอทีการใช้ awk ก็เพียงพอและสมบูรณ์แบบ ในแต่ละวันความเร็วของคอมพิวเตอร์ไม่ใช่ปัญหาดังนั้นฉันจึงสามารถรวม awk & unix เพื่อไพพ์คำสั่ง liners 1 ตัวเป็น "script" ได้ ด้วยการค้นหา Awk ตามฟิลด์และบันทึกฉันใช้เพื่อตรวจสอบข้อมูลไฟล์อย่างรวดเร็วแทนที่จะใช้ "vi" เพื่อเปิดไฟล์ ฉันต้องบอกว่าความสามารถของ awk ทำให้งานของฉันมีความสุขเป็นพิเศษฉันสามารถช่วยเพื่อนร่วมงานในการจัดเรียงสิ่งต่างๆได้อย่างรวดเร็วโดยใช้ awk รหัสที่น่าทึ่งสำหรับฉัน


0

เมื่อเร็ว ๆ นี้ฉันพยายามที่จะเห็นภาพไฟล์ pcap ของเครือข่ายที่บันทึกการโจมตี DOS ซึ่งมีจำนวนมากกว่า 20Gbs ฉันต้องการการประทับเวลาและที่อยู่ IP ในสถานการณ์ของฉันAWK one-liner ทำงานได้อย่างยอดเยี่ยมและค่อนข้างเร็วเช่นกัน ฉันใช้AWKโดยเฉพาะเพื่อล้างไฟล์ที่แยกออกรับที่อยู่ IP และจำนวนแพ็กเก็ตทั้งหมดจากที่อยู่ IP เหล่านั้นภายในช่วงเวลาที่จัดกลุ่ม ฉันเห็นด้วยอย่างยิ่งกับสิ่งที่คนอื่นเขียนไว้ข้างต้น ขึ้นอยู่กับความต้องการของคุณ


0

เหตุผลหนึ่งที่จะไม่เรียนรู้ awk ก็คือไม่มีการจับคู่แบบไม่โลภในนิพจน์ทั่วไป

ฉันมีรหัส awk ซึ่งตอนนี้ฉันต้องเขียนใหม่เท่านั้นเพราะจู่ๆฉันก็แก้ไขจุดบกพร่องว่าไม่มีสิ่งที่เรียกว่าการจับคู่แบบไม่โลภใน awk / gawk ดังนั้นจึงไม่สามารถเรียกใช้ regexes ได้อย่างถูกต้อง


0

ขึ้นอยู่กับเพื่อนร่วมทีมและคุณเป็นผู้นำและงานที่คุณกำลังทำอยู่

if( team mates and leader ask to write awk ){
  if( you can reject that){
    if( awk code is very small){
      learn little just like learn Regex
    }else{
      use python or even java
    }
  }else{
    do as they ask
  }
}

0

ฉันได้ทำการเข้ารหัสใน python ในปัจจุบัน แต่ฉันยังไม่รู้จักมันดีพอที่จะใช้งานง่าย ๆ สำหรับการแปลงไฟล์เพียงครั้งเดียว

ด้วย awk ฉันสามารถพัฒนาโค้ดหนึ่งบรรทัดบนบรรทัดคำสั่ง unix ได้อย่างรวดเร็วซึ่งทำการเปลี่ยนแปลงที่สวยงาม ทุกครั้งที่ฉันใช้ awk โค้ดที่ฉันเขียนจะถูกทิ้งและมีความยาวไม่เกินสองสามบรรทัด อาจเป็นคำสั่ง "if" และ "printf" ที่นี่หรือที่นั่นในบรรทัดเดียว

ฉันไม่เคยเขียนโค้ดที่มีความยาวเกิน 10 บรรทัดด้วย awk ฉันเห็นสคริปต์ดังกล่าวเมื่อหลายปีก่อน

แต่อะไรก็ตามที่ต้องใช้โค้ดหลายบรรทัดฉันจะใช้ python

ฉันรัก awk เป็นเครื่องมือที่ทรงพลังมากเมื่อใช้ร่วมกับ sed

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.