มีการสอนพื้นฐานสำหรับ grep, awk และ sed หรือไม่? [ปิด]


95

ฉันเคยเป็นผู้ใช้ลีนุกซ์มาระยะหนึ่งแล้วและฉันก็เข้าใจดีมากเกี่ยวกับยูทิลิตี้บรรทัดคำสั่งทั่วไป แต่คนที่มาขึ้นและขึ้นอีกครั้งในความสัมพันธ์กับการเขียนโปรแกรมgrep, และawksed

เกี่ยวกับสิ่งเดียวที่ฉันใช้ grep สำหรับคือการวางข้อมูลลงในไฟล์เพื่อค้นหาไฟล์ในล็อกไฟล์ผลลัพธ์ของไฟล์psอื่น ๆ ที่ฉันไม่ได้ใช้awkหรือsedเลย มีแบบฝึกหัดที่ดีสำหรับสาธารณูปโภคเหล่านี้หรือไม่?



ฉันเลิกเรียนรู้ regex เสมอเพราะฉันบอกตัวเองว่าวันหนึ่งฉันจะได้เรียนรู้จากการอ่านเอกสารต้นฉบับของ Kleene เกี่ยวกับตรรกะที่คิดค้นแนวคิดก่อนที่มันจะถูกนำมาใช้อย่างกว้างขวางในคอมพิวเตอร์
ixtmixilix

ฉันเห็นด้วยกับ gvkv: ถ้าคุณต้องการเรียนรู้สิ่งเหล่านี้คุณก็อาจเรียนรู้ Perl ได้ทำสิ่งgrepนั้นsedและawkทำ (และในลักษณะเดียวกัน) และอีกมากมาย
reinierpost

ฉันชอบ thegeekstuff.com เสมอ พวกเขาตัดตรงไปยังตัวอย่างเมื่อเทียบกับmanหน้าปกติซึ่งให้ความรู้สึกเหมือนเชิงอรรถ 90%
isomorphismes

คำตอบ:


65

AWK เหมาะอย่างยิ่งสำหรับข้อมูลตารางและมีช่วงการเรียนรู้ต่ำกว่าทางเลือกอื่น

AWK: บทแนะนำและการแนะนำ

AWK Primer ( alt ลิงค์ )

RegularExpressions.info

กวดวิชา

กวดวิชา grep

info sed, info grepและinfo awkหรือinfo gawk


19

หนังสือ O'Reilly sed และ awkเหมาะสำหรับ er sed และ awk


11

ฉันเขียนหนังสือเล่มหนึ่งเกี่ยวกับsed- คู่มือที่ชัดเจนสำหรับการชักชวน - นั่นรวมถึงการสอน มันอย่างเต็มที่ครอบคลุมsedเช่นเดียวกับคำสั่งที่เกี่ยวข้องเช่นgrep, tr, และhead tailนอกจากนี้ยังครอบคลุมการแสดงออกปกติอย่างเต็มที่ดีกว่าที่ฉันเคยเห็นที่อื่น

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

ฉันไม่เห็นด้วยที่awkล้าสมัยตรงกันข้าม มันเหมือนกับสิ่งต่าง ๆ ของยูนิกซ์ (เช่นvi) มีช่วงการเรียนรู้ แต่มันก็คุ้มค่า

ผมไม่เห็นด้วยกับข้อเสนอแนะที่จะใช้ในสถานที่ของawk grepไม่สมเหตุสมผลในประสบการณ์ของฉัน grepช่างยอดเยี่ยมและเรียบง่าย


ฉันสองgrepสิ่ง - คุณไม่ใช้รถแทรกเตอร์บนฟรีเวย์ถ้าคุณสามารถช่วยได้ และมันก็เป็นหนังสือที่ดีเช่นกัน - ขอบคุณ
mikeserv

3

ตำรานิพจน์ทั่วไปที่ตีพิมพ์โดย O'Rielly จะเพียงพอที่จะให้คุณได้ทุกที่ในทุกภาษาที่ใช้


3

ผู้เขียนหนังสือเล่มนี้คือ Kernigan และ Pike ชื่อเรื่องเป็นอะไรที่เหมือน "The Unix Programming Environment"

หนังสือที่ฉันเรียนรู้มาจากจริง ๆ เรียกว่า "An Introduction to Berkely Unix"


2

หากคุณต้องเรียนรู้หนึ่งในสามของเหล่านี้ (grep, sed และ awk) คุณสามารถเรียนรู้awk / gawk . awk สามารถทำฟังก์ชั่น grep และ sed ของเช่นการใช้ regex เพื่อค้นหา / แทนที่ข้อความรวมทั้งอีกมากมายเพราะมันเป็นภาษาการเขียนโปรแกรม หากคุณเรียนรู้สิ่งที่อยู่ภายในของ gawk / awk คุณไม่จำเป็นต้องใช้ grep / sed / wc / cut เป็นต้นเพียงใช้เครื่องมือเดียว


โอ้ btw เราไม่ต้องการแม้แต่ awk คุณสามารถใช้g++ -x c++ - -o /tmp/prog && /tmp/progและพิมพ์คำสั่งของคุณได้ เครื่องมือหนึ่งในการปกครองพวกเขาทั้งหมด! :-)
Lie Ryan

1
ใครต้องการคอมไพเลอร์เมื่อคุณสามารถเขียนไบนารี่ลงในไฟล์ได้โดยตรง แมวจะทำหรือ ed หากคุณรู้สึกขี้เกียจ
cas

1

ในความคิดของฉัน awk เป็นสิ่งที่ล้าสมัยไม่มากก็น้อย (แต่คนอื่น ๆ จะเถียงกันอย่างมากกับความคิดเห็นนี้) คนส่วนใหญ่ที่ฉันรู้จักทุกวันนี้ใช้ภาษาสคริปต์บางอย่างเช่น perl หรือวันนี้มักใช้ภาษาไพ ธ อน sed นั้นยอดเยี่ยมสำหรับงานการจัดการข้อความที่เรียบง่ายฉันใช้มันตลอดเวลา ผมได้เรียนรู้เป็นหลักโดยดูที่ sed หนึ่งสมุทรเช่นผู้ที่http://sed.sourceforge.net/sed1line.txt เกี่ยวกับ grep: โดยทั่วไปคุณต้องการที่จะเข้าใจการแสดงออกปกติ (จำเป็นสำหรับ sed) ฉันที่นี่เพิ่งใช้คู่มือ texinfo


10
awk ยังคงมีประโยชน์มากสำหรับการจัดการข้อมูลที่ส่งจากคำสั่งอื่น ๆ สำหรับการใช้งานบรรทัดคำสั่งแบบง่ายฉันยังไม่คิดว่ามันล้าสมัยไปแล้ว
MaQleod

นอกจากนี้ควรมีในระบบหลายระบบเนื่องจาก POSIX
echox

1
AWK ขั้นสูงส่วนใหญ่น่าจะทำได้ดีกว่าด้วย perl หรือ python แต่อย่างใด
user455

1
Awk ยังมีประโยชน์ในการรู้คำตอบต่าง ๆ ที่คุณอาจพบขณะพยายามแก้ไขปัญหา คุณมักจะพบตัวอย่างออนไลน์ที่ใช้งบ awk awk '{print $3}'เช่น
Steven D

1
ที่ทำงานและที่บ้านฉันใช้ awk บ่อยกว่านี้ ไม่มีสิ่งใดสามารถเอาชนะ awk ที่ข้อมูลตารางคงที่เช่นdpkg -lเอาต์พุต ฉันจะไม่ทำอะไรซับซ้อนในระยะไกล แต่ฉันจะเป็นเครื่องมือสั้น ๆ โดยไม่ต้องตกใจ ฉันไม่สามารถพูดได้เหมือนกันสำหรับภาษาการเขียนโปรแกรมทั่วไปมากขึ้นเท่าที่ฉันชอบบางคน
JM Becker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.