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

AWK เป็นภาษาการเขียนโปรแกรมตีความตีความที่ออกแบบมาสำหรับการประมวลผลข้อความและโดยทั่วไปจะใช้เป็นเครื่องมือในการสกัดข้อมูลและการรายงาน AWK ส่วนใหญ่ใช้กับระบบ Unix

30
วิธีการค้นหา / แทนที่สตริงแบบเรียกซ้ำด้วย awk หรือ sed?
ฉันจะค้นหาและแทนที่ทุกเหตุการณ์ที่เกิดขึ้นได้อย่างไร: subdomainA.example.com กับ subdomainB.example.com ในทุกไฟล์ข้อความภายใต้/home/www/ต้นไม้ไดเรกทอรีซ้ำซ้ำ?
675 bash  sed  awk  replace 

25
ค้นหาและฆ่ากระบวนการในหนึ่งบรรทัดโดยใช้ bash และ regex
ฉันมักจะต้องฆ่ากระบวนการระหว่างการเขียนโปรแกรม วิธีที่ฉันทำตอนนี้คือ: [~]$ ps aux | grep 'python csp_build.py' user 5124 1.0 0.3 214588 13852 pts/4 Sl+ 11:19 0:00 python csp_build.py user 5373 0.0 0.0 8096 960 pts/6 S+ 11:20 0:00 grep python csp_build.py [~]$ kill 5124 ฉันจะแยก id กระบวนการโดยอัตโนมัติและฆ่าในบรรทัดเดียวกันได้อย่างไร แบบนี้: [~]$ ps aux | grep 'python csp_build.py' | kill …
648 regex  bash  terminal  awk 

19
เครื่องมือทุบตีเพื่อรับบรรทัดที่ n จากไฟล์
มีวิธี "แบบบัญญัติ" หรือไม่? ฉันใช้head -n | tail -1ซึ่งทำเคล็ดลับ แต่ฉันสงสัยว่ามีเครื่องมือทุบตีที่แยกเส้น (หรือช่วงบรรทัด) จากไฟล์ โดย "canonical" ฉันหมายถึงโปรแกรมที่มีหน้าที่หลักทำเช่นนั้น
604 bash  shell  unix  awk  sed 

3
ความแตกต่างระหว่าง sed และ awk คืออะไร? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา อะไรคือความแตกต่างระหว่าง awk และ sed? แอปพลิเคชั่นประเภทใดบ้างที่ใช้ดีที่สุดสำหรับเครื่องมือ sed และ awk
497 sed  awk 

24
การใช้ awk เพื่อพิมพ์คอลัมน์ทั้งหมดจาก nth ถึงล่าสุด
บรรทัดนี้ใช้ได้จนกระทั่งฉันมีพื้นที่ว่างในฟิลด์ที่สอง svn status | grep '\!' | gawk '{print $2;}' > removedProjs มีวิธีที่จะพิมพ์ awk ทุกอย่างในราคา $ 2 หรือมากกว่าหรือไม่? ($ 3, $ 4 .. จนกว่าเราจะไม่มีคอลัมน์อีกต่อไป?) ฉันคิดว่าฉันควรจะเพิ่มว่าฉันกำลังทำสิ่งนี้ในสภาพแวดล้อม Windows ด้วย Cygwin
310 linux  awk 

7
ฉันจะใช้ตัวแปรเชลล์ในสคริปต์ awk ได้อย่างไร
ผมพบว่าวิธีการที่จะผ่านตัวแปรเปลือกภายนอกไปยังawkสคริปต์ แต่ฉันสับสนเกี่ยวกับและ'" ก่อนอื่นฉันลองด้วย shell script: $ v=123test $ echo $v 123test $ echo "$v" 123test จากนั้นลอง awk: $ awk 'BEGIN{print "'$v'"}' $ 123test $ awk 'BEGIN{print '"$v"'}' $ 123 ทำไมถึงแตกต่าง สุดท้ายฉันก็ลองทำสิ่งนี้: $ awk 'BEGIN{print " '$v' "}' $ 123test $ awk 'BEGIN{print ' "$v" '}' awk: cmd. line:1: BEGIN{print awk: …
290 bash  shell  awk 

19
ฉันจะสลับบรรทัดของไฟล์ข้อความในบรรทัดคำสั่ง Unix หรือในเชลล์สคริปต์ได้อย่างไร
ฉันต้องการสับเปลี่ยนบรรทัดไฟล์ข้อความแบบสุ่มและสร้างไฟล์ใหม่ ไฟล์อาจมีหลายพันบรรทัด ฉันจะทำอย่างนั้นด้วยcat, awk, cutetc?

5
อะไรคือความแตกต่างระหว่าง Perl, Python, AWK และ sed? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา แค่อยากรู้ว่าอะไรคือความแตกต่างที่สำคัญระหว่างพวกเขา และพลังของแต่ละภาษา (ซึ่งจะดีกว่าการใช้งาน) แก้ไข:ไม่ใช่ "vs. " ชอบหัวข้อเพียงแค่ข้อมูล



11
จะแสดงเฉพาะบรรทัดถัดไปหลังจากจับคู่ได้อย่างไร
grep -A1 'blah' logfile ขอบคุณคำสั่งนี้สำหรับทุกบรรทัดที่มี 'blah' อยู่ในนั้นฉันได้รับเอาต์พุตของบรรทัดที่มี 'blah' และบรรทัดถัดไปที่ตามมาใน logfile อาจเป็นวิธีที่ง่าย แต่ฉันไม่สามารถหาวิธีเว้นบรรทัดที่มี 'blah' และแสดงเฉพาะบรรทัดถัดไปในผลลัพธ์ได้
218 awk  sed  grep 

7
การใช้ตัวคั่นหลายตัวใน awk
ฉันมีไฟล์ที่มีบรรทัดต่อไปนี้: /logs/tc0001/tomcat/tomcat7.1/conf/catalina.properties:app.env.server.name = demo.example.com /logs/tc0001/tomcat/tomcat7.2/conf/catalina.properties:app.env.server.name = quest.example.com /logs/tc0001/tomcat/tomcat7.5/conf/catalina.properties:app.env.server.name = www.example.com ในผลลัพธ์ข้างต้นฉันต้องการแยก 3 ฟิลด์ (หมายเลข 2, 4 และอันสุดท้าย*.example.com) ฉันได้รับผลลัพธ์ต่อไปนี้: cat file | awk -F'/' '{print $3 "\t" $5}' tc0001 tomcat7.1 tc0001 tomcat7.2 tc0001 tomcat7.5 ฉันจะแยกฟิลด์สุดท้ายด้วยชื่อโดเมนที่อยู่หลังได้'='อย่างไร ฉันจะใช้multiple delimiterเพื่อแยกฟิลด์ได้อย่างไร

30
ฉันจะรวมตัวเลขทั้งหมดในไฟล์ได้อย่างรวดเร็วได้อย่างไร
ฉันมีไฟล์ที่มีหลายพันตัวเลขโดยแต่ละไฟล์เป็นของตัวเอง: 34 42 11 6 2 99 ... ฉันต้องการเขียนสคริปต์ซึ่งจะพิมพ์ผลรวมของตัวเลขทั้งหมดในไฟล์ ฉันมีวิธีแก้ปัญหาแล้ว แต่มันก็ไม่ได้มีประสิทธิภาพมากนัก (ใช้เวลาหลายนาทีในการทำงาน) ฉันกำลังมองหาโซลูชันที่มีประสิทธิภาพมากขึ้น ข้อเสนอแนะใด ๆ
195 linux  perl  bash  shell  awk 

6
awk โดยไม่ต้องพิมพ์ newline
ฉันต้องการผลรวมตัวแปร / NR ที่จะพิมพ์แบบเคียงข้างกันในการทำซ้ำแต่ละครั้ง เราจะหลีกเลี่ยง awk จากการพิมพ์บรรทัดใหม่ในแต่ละการวนซ้ำได้อย่างไร ในรหัสของฉันบรรทัดใหม่จะถูกพิมพ์ตามค่าเริ่มต้นในการทำซ้ำแต่ละครั้ง for file in cg_c ep_c is_c tau xhpl printf "\n $file" >> to-plot.xls for f in 2.54 1.60 800 awk '{sum+=$3}; END {print sum/NR}' ${file}_${f}_v1.xls >> to-plot-p.xls done done ฉันต้องการให้ผลลัพธ์ปรากฏเช่นนี้ cg_c ans1 ans2 ans3 ep_c ans1 ans2 ans3 is_c ans1 ans2 ans3 …
169 scripting  awk  newline 

9
วิธีการแยกสตริงที่คั่นด้วยเป็นอาร์เรย์ใน awk?
วิธีการแยกสตริงเมื่อประกอบด้วยสัญลักษณ์ไปป์|ในนั้น ฉันต้องการแยกพวกมันออกเป็นอาเรย์ ฉันเหนื่อย echo "12:23:11" | awk '{split($0,a,":"); print a[3] a[2] a[1]}' ซึ่งใช้งานได้ดี หากสตริงของฉันเป็นเช่น"12|23|11"นั้นฉันจะแบ่งออกเป็นอาร์เรย์ได้อย่างไร
169 string  unix  awk  split 

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