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

รูปแบบการสแกนและการประมวลผลภาษา


5
จะ grep สำหรับข้อความในไฟล์และแสดงย่อหน้าที่มีข้อความได้อย่างไร
ด้านล่างนี้เป็นข้อความในไฟล์: Pseudo name=Apple Code=42B state=fault Pseudo name=Prance Code=43B state=good ฉันต้องการ grep สำหรับ "42B" และรับผลลัพธ์จากข้อความข้างต้นเช่น: Pseudo name=Apple Code=42B state=fault ใครบ้างมีความคิดเกี่ยวกับวิธีการบรรลุการใช้grep/ awk/ sed?

7
Sed - แทนที่อินสแตนซ์ k แรกของคำในไฟล์
ฉันต้องการแทนที่kอินสแตนซ์แรกของคำ ฉันจะทำสิ่งนี้ได้อย่างไร เช่น. ไฟล์ Say foo.txtมี 100 อินสแตนซ์ของคำว่า 'linux' ฉันต้องแทนที่ 50 รายการแรกเท่านั้น

3
แตกต่างแสดงบรรทัดที่แก้ไขจากไฟล์ที่ถูกต้องเท่านั้น
ฉันมีไฟล์aและbและผมอยากจะสายออกของที่มีการเปลี่ยนแปลงตั้งแต่มันถูกโคลนจากb aเพียงแค่บรรทัดที่แก้ไขไม่มีบริบทโดยรอบไม่มีเครื่องหมายตรงข้ามที่ต่างกัน ฉันจะทำสิ่งนั้นโดยใช้เชลล์สคริปต์ได้อย่างไร (ไม่มี Python / Perl / PHP / ... ) Sed และ awk เป็นคำตอบที่ยอมรับได้ สำหรับตอนนี้สิ่งที่ฉันกำลังทำคือ diff -y กับ - suppress-common-lines และ sed โดยใช้การอ้างอิงย้อนกลับของ regex เพื่อดึงส่วนที่ถูกต้องหลังจากช่องว่าง จะต้องมีวิธีที่ดีกว่า ใช้ perl (ซึ่งเป็นสิ่งต้องห้าม) ฉันจะทำสิ่งนี้: diff -y --suppress-common-lines -W $COLUMNS Eclipse_Preferences_Export_*.epf | perl -pe 's/.*\t|\t(.*)$/\1/g'
24 shell-script  sed  awk  diff 

7
การใช้ฟังก์ชัน bash shell ภายใน AWK
เป็นไปได้ไหมที่จะใช้ฟังก์ชั่นทุบตีใน AWK? ไฟล์ตัวอย่าง (สตริง, int, int, int) Mike 247808 247809 247810 กำลังพยายามแปลงค่าจากฐานสิบเป็นฐานสิบหก ฟังก์ชันกำหนดไว้ใน. bashrc หรือในเชลล์สคริปต์ awk '{print $1 ; d2h($2)}' file awk: การเรียกฟังก์ชันที่ไม่ได้กำหนดหมายเลขบันทึกอินพุต d2h 1 ไฟล์หมายเลขบรรทัดซอร์สไฟล์ 1
24 bash  awk 

7
ข้อความระหว่างสองแท็ก
ฉันต้องการดึงสิ่งที่อยู่ระหว่างแท็กสองแท็กเหล่านี้<tr> </tr>- จากเอกสาร html ตอนนี้ฉันไม่มีข้อกำหนด html เฉพาะใด ๆ ที่จะรับประกันการแยกวิเคราะห์ html ฉันเพียงแค่ต้องการสิ่งธรรมดาที่การแข่งขัน<tr>และ</tr>และได้รับทุกอย่างในระหว่างและอาจจะมีหลายtrs ฉันลอง awk ซึ่งใช้งานได้ แต่ด้วยเหตุผลบางอย่างมันทำให้ฉันซ้ำซ้อนของแต่ละแถวที่แยกออกมา awk ' /<TR/{p=1; s=$0} p && /<\/TR>/{print $0 FS s; s=""; p=0} p' htmlfile> newfile จะไปเกี่ยวกับเรื่องนี้ได้อย่างไร

2
ทำไม awk ทำบัฟเฟอร์เต็มเมื่ออ่านจากไปป์
ฉันกำลังอ่านจากพอร์ตอนุกรมที่เชื่อมต่อกับอุปกรณ์ gps ส่งสตริง nmea การร้องขอที่เรียบง่ายเพื่อแสดงจุดของฉัน: $ awk '{ print $0 }' /dev/ttyPSC9 GPGGA,073651.000,6310.1043,N,01436.1539,E,1,07,1.0,340.2,M,33.3,M,,0000*56 $GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39 $GPRMC,073651.000,A,6310.1043,N,01436.1539,E,0.42,163.42,070312,,,A*67 GPGGA,073652.000,6310.1043,N,01436.1540,E,1,07,1.0,339.2,M,33.3,M,,0000*55 $GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39 ถ้าฉันลองอ่านจากไปป์ให้ awk บัฟเฟอร์อินพุตก่อนที่จะส่งไปยัง stdout $ cat /dev/ttyPSC9 | awk '{ print $0 }' <long pause> GPGGA,073651.000,6310.1043,N,01436.1539,E,1,07,1.0,340.2,M,33.3,M,,0000*56 $GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39 $GPRMC,073651.000,A,6310.1043,N,01436.1539,E,0.42,163.42,070312,,,A*67 GPGGA,073652.000,6310.1043,N,01436.1540,E,1,07,1.0,339.2,M,33.3,M,,0000*55 $GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39 ฉันจะหลีกเลี่ยงการบัฟเฟอร์ได้อย่างไร แก้ไข : Kyle Jones แนะนำว่าแมวกำลังบัฟเฟอร์มันเป็นเอาต์พุต แต่ดูเหมือนจะไม่เกิดขึ้น: $ strace cat /dev/ttyPSC9 | awk …
23 awk  tty  serial-port 

5
วิธีจัดการไฟล์ CSV ด้วย sed หรือ awk?
ฉันจะทำสิ่งต่อไปนี้กับไฟล์ CSV โดยใช้sedหรือawk? ลบคอลัมน์ ทำซ้ำคอลัมน์ ย้ายคอลัมน์ ฉันมีโต๊ะใหญ่กว่า 200 sedแถวและฉันไม่ว่าคุ้นเคยกับ
23 sed  awk  csv 

7
ลบเครื่องหมายจุลภาคระหว่างเครื่องหมายคำพูดเฉพาะในไฟล์ที่คั่นด้วยเครื่องหมายจุลภาค
ฉันมีไฟล์อินพุตคั่นด้วยเครื่องหมายจุลภาค ( ,) มีบางฟิลด์อยู่ในเครื่องหมายคำพูดคู่ที่มีเครื่องหมายจุลภาคอยู่ นี่คือแถวตัวอย่าง 123,"ABC, DEV 23",345,534.202,NAME ฉันต้องลบเครื่องหมายจุลภาคทั้งหมดที่เกิดขึ้นภายในเครื่องหมายคำพูดคู่และเครื่องหมายคำพูดคู่ด้วย ดังนั้นบรรทัดข้างต้นควรได้รับการแยกวิเคราะห์ตามที่แสดงด้านล่าง 123,ABC DEV 23,345,534.202,NAME ฉันลองใช้สิ่งต่อไปนี้sedแต่ไม่ให้ผลลัพธ์ที่คาดหวัง sed -e 's/\(".*\),\(".*\)/\1 \2/g' เทคนิคใด ๆ อย่างรวดเร็วด้วยsed, awkหรือยูทิลิตี้ยูนิกซ์อื่นใดโปรด?
23 text-processing  sed  awk  csv 

3
เมื่อใช้ awk / pattern / {print“ text”} / patern / {print“”} มีรูปแบบ ELSE หรือไม่
สมมติว่าฉันมีไฟล์ข้อความเช่น: R1 12 324 3453 36 457 4 7 8 R2 34 2342 2525 25 25 26 26 2 2 R3 23 2342 32 52 54 543 643 63 R4 25 234 2342 4 234242 ฉันต้องการที่จะใช้awkในการประมวลผลบรรทัดเหล่านี้แตกต่างกันเช่น awk '/R1/ { print "=>" $0} /R2/ { print "*" $0} ' และฉันต้องการพิมพ์บรรทัดที่เหลือทั้งหมดด้วย (โดยไม่ต้องทำซ้ำของบรรทัดที่ฉันได้ประมวลผลแล้ว) …
22 awk 

11
เครื่องมือใน UNIX เพื่อลบวันที่
มีเครื่องมือใดใน Solaris UNIX (ดังนั้นจึงไม่มีเครื่องมือ GNU) เพื่อลบวันที่หรือไม่ ฉันรู้ว่าใน Linux เรามีgawkที่สามารถลบหนึ่งวันจากที่อื่น แต่ใน Solaris ค่าสูงสุดที่เรามีคือnawk(ปรับปรุงawk) ซึ่งไม่สามารถทำการคำนวณวันที่ได้ นอกจากนี้ฉันไม่สามารถใช้ Perl มีวิธีใดในการคำนวณวันที่เป็น20100909 - 20001010อย่างไร อัปเดต: bcสามารถคำนวณวันที่ได้หรือไม่
22 shell  solaris  awk  utilities  date 

13
ฉันจะลบความคิดเห็นทั้งหมดจากไฟล์ได้อย่างไร
ฉันมีไฟล์ที่มีความคิดเห็น: foo bar stuff #Do not show this... morestuff evenmorestuff#Or this ฉันแค่ต้องการพิมพ์รหัสที่ไม่ใส่เครื่องหมายทั้งหมด: foo bar stuff morestuff evenmorestuff ความสามารถในการตัดความคิดเห็นออกจากไฟล์เป็นสิ่งสำคัญ ... วิธีการที่ดีคืออะไร

5
แตกชื่อไฟล์จากพา ธ ในโปรแกรม awk
ฉันมีสคริปต์ awk และฉันได้ส่งไฟล์ CSV ไปยังมัน awk -f script.awk /home/abc/imp/asgd.csv สิ่งที่ฉันทำคือการได้รับ FILENAME script.awkภายใน FILENAME ให้เส้นทางทั้งหมดแก่ฉัน ในฐานะที่ผมอยู่ใน awk basename FILENAMEฉันไม่สามารถใช้ print FILENAME; /home/abc/imp/asgd.csv ฉันได้ลองกับสิ่งนี้แล้ว script.awk echo $FILENAME | awk -F"/" '{print $NF}' script.awkแต่ฉันไม่สามารถดำเนินการนี้ภายใน ฉันจะเข้าasgd.csvสู่โปรแกรม awk ได้อย่างไร
21 awk  filenames 

2
การค้นหาแบบคำนึงถึงขนาดตัวพิมพ์ใน awk
ฉันต้องการค้นหาคำหลักที่ใช้ awk แต่ฉันต้องการทำการค้นหาแบบตรงตามตัวพิมพ์ใหญ่ - เล็ก (ไม่ต้องตรงตามตัวพิมพ์ใหญ่ - เล็ก) ฉันคิดว่าวิธีที่ดีที่สุดคือการใช้ทั้งคำค้นหา ("คำสำคัญ") และบรรทัดเป้าหมายที่ awk อ่านพร้อมกัน จากคำถามนี้ฉันจะใช้toupperพิมพ์เป็นตัวพิมพ์ใหญ่ทั้งหมดได้อย่างไร แต่ฉันไม่รู้วิธีใช้ในการจับคู่เพราะคำตอบนั้นแสดงการพิมพ์และไม่ปล่อยให้ตัวพิมพ์ใหญ่เป็นตัวแปร นี่คือตัวอย่างที่ได้รับข้อมูลนี้: blablabla &&&Key Word&&& I want all these text and numbers 123 and chars !"£$%& as output &&&KEY WORD&&& blablabla ฉันต้องการผลลัพธ์นี้: I want all these text and numbers 123 and chars !"£$%& as output นี่คือสิ่งที่ฉันมี …

3
Awk พิมพ์ความกว้างและปัดเศษขึ้น
ฉันจำเป็นต้องprintfออกจำนวน แต่มีความกว้างที่กำหนดและโค้งมน (กับ awk!) %10s ฉันมีสิ่งนี้และอย่างใดฉันต้องเชื่อมต่อ%dแต่ทุกอย่างที่ฉันทำจบลงด้วย parametres มากเกินไปสำหรับ awk (เพราะฉันมีคอลัมน์เพิ่มเติม)
20 scripting  awk  printf 

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