คำถามติดแท็ก gawk


9
พิมพ์คอลัมน์ / ฟิลด์สุดท้ายที่สองใน awk
ฉันต้องการพิมพ์คอลัมน์หรือฟิลด์สุดท้ายที่สองใน awk จำนวนฟิลด์เป็นตัวแปร ฉันรู้ว่าฉันควรใช้งาน$NFได้ แต่ไม่แน่ใจว่าจะใช้งานได้อย่างไร และนี่ดูเหมือนจะไม่ทำงาน: awk ' { print ( $NF-- ) } '
164 awk  gawk 

10
วิธีใช้หลายอาร์กิวเมนต์สำหรับ awk กับ shebang (เช่น #!)
ฉันต้องการเรียกใช้สคริปต์gawk--re-intervalโดยใช้ shebang แนวทาง "ไร้เดียงสา" ของ #!/usr/bin/gawk --re-interval -f ... awk script goes here ใช้งานไม่ได้เนื่องจาก gawk ถูกเรียกด้วยอาร์กิวเมนต์แรก"--re-interval -f"(ไม่ถูกแยกออกจากช่องว่าง) ซึ่งไม่เข้าใจ มีวิธีแก้ปัญหาสำหรับสิ่งนั้นหรือไม่? แน่นอนคุณไม่สามารถเรียก gawk ได้โดยตรง แต่รวมไว้ในเชลล์สคริปต์ที่แยกอาร์กิวเมนต์แรกหรือสร้างเชลล์สคริปต์ที่เรียกว่า gawk และใส่สคริปต์ลงในไฟล์อื่น แต่ฉันสงสัยว่ามีวิธีทำหรือไม่ นี้ภายในไฟล์เดียว ลักษณะการทำงานของเส้น Shebang แตกต่างกันไปในแต่ละระบบ - อย่างน้อยในCygwinจะไม่แบ่งอาร์กิวเมนต์ด้วยช่องว่าง ฉันแค่สนใจว่าจะทำอย่างไรกับระบบที่มีพฤติกรรมเช่นนั้น สคริปต์ไม่ได้มีไว้สำหรับพกพา
118 shell  unix  awk  gawk  shebang 

11
จะใช้ sed, awk หรือ gawk เพื่อพิมพ์เฉพาะสิ่งที่จับคู่ได้อย่างไร?
ฉันเห็นตัวอย่างและหน้าคนมากมายเกี่ยวกับวิธีการทำสิ่งต่างๆเช่นการค้นหาและแทนที่โดยใช้ sed, awk หรือ gawk แต่ในกรณีของฉันฉันมีนิพจน์ทั่วไปที่ฉันต้องการเรียกใช้กับไฟล์ข้อความเพื่อแยกค่าเฉพาะ ฉันไม่ต้องการทำการค้นหาและแทนที่ สิ่งนี้ถูกเรียกจากทุบตี ลองใช้ตัวอย่าง: ตัวอย่างนิพจน์ทั่วไป: .*abc([0-9]+)xyz.* ตัวอย่างไฟล์อินพุต: a b c abc12345xyz a b c ง่ายเหมือนเสียงนี้ฉันไม่สามารถหาวิธีเรียก sed / awk / gawk ได้อย่างถูกต้อง สิ่งที่ฉันหวังว่าจะทำคือจากในสคริปต์ทุบตีของฉันมี: myvalue=$( sed <...something...> input.txt ) สิ่งที่ฉันได้ลอง ได้แก่ : sed -e 's/.*([0-9]).*/\\1/g' example.txt # extracts the entire input file sed -n 's/.*([0-9]).*/\\1/g' example.txt # …
101 regex  unix  sed  awk  gawk 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.