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

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

4
แยกเอาท์พุทยาวเป็นสองคอลัมน์
มียูทิลิตี้หรือสคริปต์ง่าย ๆ ที่จะจัดเรียงผลลัพธ์จากหนึ่งในสคริปต์ของฉันหรือไม่ ฉันมีข้อมูลในบางรูปแบบ: A aldkhasdfljhaf B klajsdfhalsdfh C salkjsdjkladdag D lseuiorlhisnflkc E sdjklfhnslkdfhn F kjhnakjshddnaskjdh แต่ถ้าสิ่งนี้กลายเป็นสองความยาวให้เขียนข้อมูลในรูปแบบต่อไปนี้ (ซึ่งยังคงเรียงตามแนวตั้ง): A aldkhasdfljhaf D lseuiorlhisnflkc B klajsdfhalsdfh E sdjklfhnslkdfhn C salkjsdjkladdag F kjhnakjshddnaskjdh จากการอ่าน manpage ฉันไม่คิดว่านี่จะเป็นสิ่งcolumnที่เหมาะสม แต่ฉันไม่แน่ใจ มันง่ายที่จะแยกในรูปแบบ: A B C D E F โดยพิมพ์เฉพาะ\nทุกบรรทัดที่สอง (สิ่งที่สคริปต์ปัจจุบันของฉันทำ) ความคิดใด ๆ ขอบคุณ!

4
ใช้ sed / awk เพื่อลบอะไรหลังจากช่องว่างแรก
aaaaaaaa 09 bbbbbbbb 90 ccccccccccccccc 89 ddddd 09 ใช้ sed / awk / replace ในข้อความด้านบนฉันต้องการลบสิ่งที่เกิดขึ้นหลังจากช่องว่างแรกในแต่ละบรรทัด ตัวอย่างเช่นผลลัพธ์จะเป็น: aaaaaaaa bbbbbbbb ccccccccccccccc ddddd ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม.
20 sed  grep  awk 


3
การทำซ้ำ awk {n} ไม่ทำงาน
ฉันพยายามพิมพ์บรรทัดโดยใช้สัญลักษณ์การทำซ้ำ {n} แต่มันไม่ทำงาน สำหรับ. เช่นฉันต้องการพิมพ์ทุกบรรทัดที่มีความยาว 4 อักขระ awk '/^.{4}$/' test_data รหัสด้านบนไม่ได้ทำการพิมพ์นั้นจะแก้ไขได้อย่างไรเพื่อที่ฉันจะสามารถใช้สัญลักษณ์ซ้ำได้? ฉันรู้ว่าทางเลือกเช่นawk '/^....$/' test_dataและawk 'length ==3 ' test_data

5
ฉันจะเรียงลำดับรายการด้วยระดับ major.minor.patch และบางครั้ง rc อย่างถูกต้องได้อย่างไร
ฉันต้องเรียงลำดับรายการต่อไปนี้ด้วยเชลล์สคริปต์และทำให้เวอร์ชันล่าสุดปรากฏที่ด้านล่างหรือด้านบน ฉันจะทำอย่างไรกับเครื่องมือของเชลล์เท่านั้น? release-5.0.0.rc1 release-5.0.0.rc2 release-5.0.0 release-5.0.1 release-5.0.10 release-5.0.11 release-5.0.13 release-5.0.14 release-5.0.15 release-5.0.16 release-5.0.17 release-5.0.18 release-5.0.19 release-5.0.2 release-5.0.20 release-5.0.21 release-5.0.22 release-5.0.23 release-5.0.24 release-5.0.25 release-5.0.26 release-5.0.27 release-5.0.28 release-5.0.29 release-5.0.3
18 shell-script  awk  sed  python  sort 

3
แยกส่วนของเส้นที่มีรูปแบบเฉพาะโดยใช้ awk, sed
ฉันมีคำถามเกี่ยวกับตัวดำเนินการ awk / sed ฉันมีไฟล์ขนาดใหญ่ที่มีชุดของบรรทัดต่อไปนี้ซ้ำแล้วซ้ำอีก Expression loweWallrhoPhi : sum=-6.97168e-09 Expression leftWallrhoPhi : sum=6.97168e-09 Expression lowerWallPhi : sum=-5.12623e-12 Expression leftWallPhi : sum=5.12623e-12 Expression loweWallrhoUSf : sum=-6.936e-09 Expression leftWallrhoUSf : sum=6.97169e-09 Expression lowerWallUSf : sum=-5.1e-12 Expression leftWallUSf : sum=5.12624e-12 ฉันต้องการแยกค่าหลังจากผลรวมในแต่ละกรณีในไฟล์แยกกัน เป็นไปได้ไหมที่จะทำในครั้งเดียว?

7
พิมพ์เส้นเลขคี่พิมพ์เส้นคู่
ฉันต้องการพิมพ์บรรทัดเลขคี่และเลขคู่จากไฟล์ ฉันพบเชลล์สคริปต์นี้ซึ่งใช้ประโยชน์จากเสียงสะท้อน #!/bin/bash # Write a shell script that, given a file name as the argument will write # the even numbered line to a file with name evenfile and odd numbered lines # in a text file called oddfile. # ------------------------------------------------------------------------- # Copyright (c) 2001 nixCraft project <http://cyberciti.biz/fb/> # …

11
Grep จำนวนมากของรูปแบบจากไฟล์ขนาดใหญ่
ฉันมีไฟล์ที่เติบโตประมาณ 200,000 บรรทัดต่อวันและมันถูกสร้างขึ้นด้วยบล็อกสามบรรทัดเช่น: 1358726575123 # key Joseph Muller # name carpenter # job 9973834728345 Andres Smith student 7836472098652 Mariah Anthony dentist ตอนนี้ผมมีไฟล์อื่นจากที่ผมดึงประมาณ 10,000 1358726575123รูปแบบที่สำคัญเช่น จากนั้นฉันเรียกใช้forลูปที่มีรูปแบบเหล่านี้และต้องตรวจสอบกับไฟล์แรก หากไฟล์ไม่มีรูปแบบดังกล่าวฉันบันทึกรูปแบบในไฟล์ที่สามเพื่อการประมวลผลเพิ่มเติม: for number in $(grep -o '[0-9]\{12\}' file2); do # finds about 10.000 keys if ! grep -q ^$number$ file1; then # file1 is a …
18 grep  awk  database  text 

1
ลบอาร์เรย์ใน awk
ใน awk ฉันสามารถล้างอาเรย์ด้วยลูปทำให้เป็นอาเรย์ที่ว่างเปล่าซึ่งเทียบเท่ากับการลบมัน for (key in array) delete array[key]; มีวิธีที่ง่ายกว่านี้ไหม? ฉันสามารถลบอาร์เรย์ทั้งหมดเพื่อให้สามารถใช้ชื่อตัวแปรสำหรับสเกลาร์ได้หรือไม่
18 awk  array 

5
รวมสองรายการในขณะที่ลบรายการที่ซ้ำกัน
ฉันมีระบบลินุกซ์ในตัวโดยใช้ Busybox (OpenWRT) - ดังนั้นคำสั่งจะถูก จำกัด ฉันมีสองไฟล์ที่มีลักษณะดังนี้: ไฟล์แรก aaaaaa bbbbbb cccccc mmmmmm nnnnnn ไฟล์ที่สอง mmmmmm nnnnnn yyyyyy zzzzzz ฉันต้องการรวม 2 รายการเหล่านี้เป็น 1 ไฟล์และลบรายการที่ซ้ำกัน ผมไม่ได้มีความแตกต่าง (พื้นที่ จำกัด ) เราจึงได้รับการใช้งานที่ดีawk, sedและgrep(หรือเครื่องมืออื่น ๆ ที่อาจจะรวมอยู่ในอินสแตนซ์ Busybox มาตรฐาน) ไปที่ไฟล์ผสานเช่น: command1 > mylist.merge command2 mylist.merge > originallist ไม่เป็นไร มันไม่จำเป็นต้องเป็นคำสั่งบรรทัดเดียว ฟังก์ชั่นที่กำหนดไว้ในปัจจุบันในกรณีของ Busybox ที่ฉันใช้ (ค่าเริ่มต้น OpenWRT): [, [, …
18 bash  grep  sed  awk  busybox 

3
วิธีรัน awk สำหรับจำนวนบรรทัดบางบรรทัด?
awkฉันต้องการที่จะดึงเส้นบางด้วย เป็นไปได้หรือไม่ที่จะทำภารกิจต่อไปนี้: ls -l | awk 'BEGIN FOR(i=122;i<=129;i++) FNR==i' ฉันจะแสดงรายละเอียดจากหมายเลขบรรทัด 122 ถึง 129 ได้อย่างไร
18 linux  awk 

4
แยกไฟล์ออกเป็นสองไฟล์
ฉันมีไฟล์ขนาดใหญ่และจำเป็นต้องแยกออกเป็นสองไฟล์ สมมติว่าในไฟล์แรก 1,000 บรรทัดควรเลือกและใส่ในไฟล์อื่นและลบบรรทัดเหล่านั้นในไฟล์แรก ฉันลองใช้splitแต่กำลังสร้างหลายชิ้น

2
บล็อกเงื่อนไขเทียบกับคำสั่งตามเงื่อนไข (ถ้า)
บอกว่าฉันมีไฟล์: PRO 1 GLN 5.55112e-17 ILE -6.245e-17 THR 5.55112e-17 ฉันต้องการให้ทุกบรรทัดที่มีจำนวนไม่เท่ากันเป็น 1 ในคอลัมน์ที่สองเพื่อเปลี่ยนเป็น 0 และคงส่วนที่เหลือไว้ ถ้าฉันใช้if(เช่นคำสั่งแบบมีเงื่อนไข) ทุกอย่างก็โอเค: awk '{if($2!=1){print $1,"0"}else{print $0}}' file PRO 1 GLN 0 ILE 0 THR 0 แต่เมื่อฉันใช้บล็อกแบบมีเงื่อนไขมีบางสิ่งที่ไม่พึงประสงค์เกิดขึ้น: awk '$2!=1 {print $1,"0"} {print $0}' file PRO 1 GLN 0 GLN 5.55112e-17 ILE 0 ILE -6.245e-17 THR 0 THR …
18 awk 

3
awk: บังคับให้มีสถานะส่งคืนหรือไม่
นี่คือการติดตามของฉันคำถามก่อนหน้านี้ ฉันกำลังตรวจสอบจำนวนฟิลด์ใน / etc / passwd โดยใช้ snippit ที่มีประโยชน์นี้ ในตัวอย่างต่อไปนี้ผู้ใช้ 'fieldcount1' และ 'fieldcount2' มีจำนวนฟิลด์ที่ไม่ถูกต้อง: $ awk -F: ' NF!=7 {print}' /etc/passwd fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash:::: fieldcount2:blah::blah:1002:100:fieldcount2:/home/fieldcount2:/bin/bash: $ echo $? 0 ในขณะที่คุณสังเกตเห็น awk จะออกโดยมีสถานะการส่งคืนเป็น 0 จากจุดยืนมันไม่มีปัญหาที่นี่ ฉันต้องการรวมคำสั่ง awk นี้ลงในเชลล์สคริปต์ ฉันต้องการพิมพ์บรรทัดทั้งหมดที่มีข้อผิดพลาดและตั้งรหัสส่งคืนเป็น 1 (ข้อผิดพลาด) ฉันสามารถลองบังคับสถานะการออกเฉพาะได้ แต่จากนั้น awk จะพิมพ์เพียงบรรทัดเดียว: $ awk -F: ' NF!=7 {print ; exit …

1
ควรใช้ grep, less, awk, sed เมื่อไหร่
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ฉันเข้าสู่โลกของ Linux และที่ทำงานฉันใช้grepมากขึ้นเรื่อย ๆ ด้วยการทำเช่นนั้นฉันก็พบว่าบางครั้งมันก็ไม่เพียงพอสำหรับสิ่งที่ฉันต้องการ ฉันกำลังต่อสู้กับไม่กี่วันที่ผ่านมาและเพื่อนร่วมงานของฉันที่เป็นลินุกซ์ผู้ดูแลระบบอาวุโสบอกให้ผมใช้grep awkฉันตกตะลึงด้วยความเร็วที่ฉันได้รับ ดังนั้นคำถามของฉันคือเมื่อไหร่ที่คุณเลือกที่จะใช้อีกอันหนึ่ง? คำถามอะไรที่ฉันสามารถถามตัวเองก่อนที่จะทำงานด้วยgrepและใช้เวลามากเมื่อฉันสามารถทำได้ด้วยawkและประหยัดเวลา?
17 awk  sed  grep  less 

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