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

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

1
“ ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว” สำหรับ / bin / awk บน Ubuntu
ฉันจะติดตั้ง awk ใน Ubuntu 11 รุ่นนี้ได้อย่างไร ฉันติดตั้งจาก Ubuntu Software Center แล้วและไม่สามารถใช้งานได้ ฉันพยายามเรียกใช้สคริปต์ awk: #!/bin/awk Begin { print strftime("ora %H, %M , %S"); } และฉันไม่สามารถเรียกใช้ได้เพราะไม่ได้ติดตั้ง awk ./l4p1.sh: /bin/awk: bad interpreter: No such file or directory

3
คำสั่ง unix เพื่อตรวจสอบช่วงของคำในข้อความ
คำสั่ง unix ใดที่ฉันสามารถใช้เพื่อกำหนดระยะห่างบรรทัดที่คำปรากฏในข้อความ "span" เท่ากับจำนวนบรรทัดของอินสแตนซ์สุดท้ายของคำลบด้วยหมายเลขบรรทัดของอินสแตนซ์แรกของคำ 1| unix is on two lines 2| once above, and once below 3| unix ในตัวอย่างข้างต้น "span" ของ 'unix' จะเป็น 2 (3-1) จนถึงตอนนี้ฉันพยายามใช้ grep -n แต่ฉันไม่คิดว่า grep มีพลังมากพอ บางทีการใช้งาน sed หรือ awk บ้าง? ขอบคุณ!
3 unix  regex  grep  sed  awk 

2
กำหนดจุดเริ่มต้นของไฟล์เมื่อผ่านไฟล์หลายไฟล์ไปยัง awk
ฉันมีเชลล์สคริปต์ดังต่อไปนี้ - ค้นหา "." "บัญชี" -maxdepth 1 -name "* .aspx" | xargs awk -f get_controls.awk มันส่งไฟล์หลายไฟล์ไปยังสคริปต์ awk BEGIN{ FS="\"" } ... /Src=/{ printf("\t%s \r\n", $6); } ฉันต้องการพิมพ์ชื่อไฟล์ปัจจุบันทั้งจากเชลล์สคริปต์หรือจากภายใน awk ที่จุดเริ่มต้นของไฟล์ Awk รู้ชื่อไฟล์ปัจจุบันอยู่ในตัวแปร FILENAME แต่ฉันไม่สามารถระบุจุดเริ่มต้นของไฟล์ได้ ฉันได้ลอง(NR==1)แล้ว แต่ไฟล์ทั้งหมดจะถูกส่งไปยัง awk เป็นสตรีมและค่าของ NR จะเพิ่มขึ้นเรื่อย ๆ เพิ่งคิดออกเมื่อฉันพิมพ์นี้ จะโพสต์คำตอบด้านล่าง!

4
ฉันจะแทนที่บรรทัดใหม่ด้วยลำดับการยกเว้นได้อย่างไร
การใช้sedเพื่อสร้างข้อความที่มีอักขระบางตัวที่เหมาะสมสำหรับใช้ในสตริงตัวอักษรนั้นตรงไปตรงมา: sed "s/\\\\/\\\\\\\\/g" sed "s/\\\"/\\\\\\\"/g" แต่ฉันจะทำสิ่งที่คล้ายกับไฟล์ข้อความที่มีอักขระขึ้นบรรทัดใหม่ได้อย่างไร
3 sed  awk 

2
วิธีแทรกข้อความที่จุดเริ่มต้นของแต่ละย่อหน้าใน bash
ฉันมีไฟล์ที่มีหลายย่อหน้าคั่นด้วยบรรทัดว่าง ในทางเทคนิคแล้วพวกเขาไม่ใช่ย่อหน้าเพียงแค่ส่วนของข้อความคั่นด้วยบรรทัดว่าง ฉันต้องการกำหนดหมายเลขย่อหน้าเพื่อพูดโดยการใส่ตัวเลขในบรรทัดแรกของแต่ละบรรทัดหลังจากบรรทัดว่าง ดังนั้นหากไฟล์ของฉันพูดว่า: This is text. This is more text. Even more text! This is text in section two. Some more text. You get the point... ฉันต้องการที่จะทำให้มันพูดว่า: 1This is text this is more text Even more text! 2This is text in section two. Some more text. You get the …

5
จะแบ่งไฟล์ CSV ตามจำนวนแถวที่ระบุอย่างไร
ฉันมีไฟล์ CSV (ประมาณ 10,000 แถวแต่ละแถวมี 300 คอลัมน์) เก็บไว้ในเซิร์ฟเวอร์ LINUX ฉันต้องการแบ่งไฟล์ CSV นี้เป็นไฟล์ CSV 500 ไฟล์จาก 20 รายการต่อไฟล์ (แต่ละรายการมีส่วนหัว CSV เดียวกันกับที่มีอยู่ใน CSV เดิม) มีคำสั่ง linux ช่วยการแปลงนี้หรือไม่
2 linux  unix  sed  csv  awk 

1
เอาต์พุต awk พิมพ์ไปยังสองไฟล์แยกกัน
นี่คือรหัสปัจจุบันของฉัน md5sum filename.iso | awk '{print $1} {print $2}' มันให้สองบรรทัดแยกกัน บรรทัดแรกคือ md5 ของไฟล์และบรรทัดที่สองคือชื่อของไฟล์ ฉันต้องการบันทึก md5 เป็น md5.txt และชื่อไฟล์ไปที่ name.txt ผลลัพธ์ของ md5sum คือxxxxxxx filename

2
ฉันจะย้ายตารางด้วยค่าคีย์ที่ซ้ำกันได้อย่างไร
ฉันมีตารางที่มีลักษณะดังนี้: Column A | Column B 10 | 0.1 10 | 0.2 10 | 0.3 20 | 0.4 20 | 0.5 20 | 0.6 ฉันต้องเปลี่ยนมันให้เป็นอย่างนี้: 10 | 20 0.1 | 0.4 0.2 | 0.5 0.3 | 0.6 ค่าต่างกันเกือบ 2k ในคอลัมน์ A สำหรับแต่ละค่ามีค่า 1k ในคอลัมน์ B อย่างแน่นอนซึ่งอาจทำซ้ำ มีวิธีอัตโนมัติในการทำเช่นนี้หรือไม่?

1
ลบบรรทัดแรกออกจากไฟล์ Unicode html
ฉันมีไฟล์ HTML ที่อยู่ในรูปแบบ UTF-8 และฉันต้องการลบห้าบรรทัดแรกออกจากมัน ฉันได้ลองใช้sedแต่มันไม่ทำงานในกรณีนี้: sed "1,5d" Result.html>small2 ใช้งานได้กับไฟล์อื่น แต่ไม่ได้อยู่ที่นี่ ฉันไม่สามารถใช้tailเพราะลบออกจากจุดสิ้นสุดของไฟล์และเว็บไซต์อาจมีการเปลี่ยนแปลงในภายหลัง นี่คือไฟล์ของฉัน HTTP/1.1 200 OK Cache-Control: private Content-Length: 176073 Content-Type: text/html; charset=utf-8 Server: Microsoft-IIS/7.5 X-AspNet-Version: 4.0.30319 Set-Cookie: ASP.NET_SessionId=jaq52r5vsd04zvffokbutu1q; path=/; HttpOnly X-Powered-By: ASP.NET Date: Thu, 29 Nov 2012 06:41:59 GMT Connection: close <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> …
2 linux  sed  text-editing  awk  tail 


4
ใช้ตัวแปรในฟังก์ชั่นย่อย awk
ทั้งหมดฉันมีสตริงที่ฉันต้องการแยกสตริงย่อย สิ่งคือตำแหน่งเริ่มต้นจะถูกเก็บไว้ในตัวแปร AWK ดูเหมือนจะไม่รู้จักตัวแปร นี่คือรหัส str="This is a test" s1="is" i=$(awk -v a="$str" -v b="$s1" 'BEGIN{print index(a,b)}') echo "$str" | awk '{print substr($0,$i)}' แต่มันไม่ได้ผล บีบบังคับ awk วิธีการรับรู้i?
1 awk 

1
วิธีการแยกเซกเมนต์ของไฟล์ไบนารีโดยยึดตามการเริ่มต้นและสิ้นสุดสตริงสตริง
ฉันมีไฟล์ไบนารีขนาดใหญ่ (หลายร้อย GB) และฉันต้องการแยกกลุ่มจากมัน ฉันรู้ว่าสตริงเลขฐานสิบหกของจุดเริ่มต้นและจุดสิ้นสุด
1 grep  sed  awk  hexdump 

2
พิมพ์คำสั่งเรียกใช้โดยเชลล์
ฉันพยายามคัดลอกไฟล์ที่ไม่มีอยู่ในไดเรกทอรีหนึ่งไปยังไดเรกทอรีอื่นโดยใช้ awk diff -r dir1 dir2 | grep dir1 | awk '{$1=$2=$3 =""; print "cp \"./dir1/" substr($0,4) "\" ./dir2/"}' | sh ทำงานได้ดียกเว้นว่าฉันต้องการพิมพ์ไฟล์ที่กำลังคัดลอก สิ่งที่ต้องการcp ./dir1/file1.txt ./dir2/ในstdout ฉันจะทำสิ่งนี้ได้อย่างไร ฉันรู้ว่ามันง่าย แต่ฉันไม่สามารถเข้าใจได้ ฉันพยายามteeและechoคำสั่ง แต่ไร้ประโยชน์
1 linux  bash  shell  awk 

6
จับคู่สตริงใน awk
ฉันจะค้นหาไฟล์เพื่อค้นหาบรรทัดที่มี SRC = ได้จากที่นี่ได้อย่างไร ฉันหมายถึงฉันจะหาที่อยู่ IP ต้นทางในไฟล์นี้โดยใช้ awk ได้อย่างไร Mar 10 03:17:12 ubuntu kernel: [11045.721649] Type=ScanXMASIN=eth0 OUT= MAC=00:0c:29:a1:51:1c:00:0c:29:23:9d:e4:08:00 SRC=192.168.1.28 DST=192.168.1.27 LEN=40 TOS=0x00 PREC=0x00 TTL=47 ID=6603 PROTO=TCP SPT=47301 DPT=53 WINDOW=1024 RES=0x00 URG PSH FIN URGP=0 Mar 10 03:17:12 ubuntu kernel: [11045.721702] Type=ScanXMASIN=eth0 OUT= MAC=00:0c:29:a1:51:1c:00:0c:29:23:9d:e4:08:00 SRC=192.168.1.30 DST=192.168.1.27 LEN=40 TOS=0x00 PREC=0x00 TTL=42 ID=6802 …
1 bash  shell  awk 

1
แยกเนื้อหาจากไฟล์บันทึกสำหรับ 5 นาทีที่ผ่านมา
ฉันพยายามใช้คำสั่ง awk เพื่อแยกเนื้อหาจากไฟล์บันทึกสำหรับ 5 นาทีที่ผ่านมา ด้านล่างเป็นคำสั่งที่ฉันใช้ `awk -v d1="$(date --date="-5 min" "+%m/%d/%y %k:%M:%S:%3N")" -v d2="$(date "+%m/%d/%y %k:%M:%S:%3N")" '$0 > d1 && $0 < d2 || $0 ~ d2' /tmp/test.log พบว่าเงื่อนไข'$0 > d1 && $0 < d2 || $0 ~ d2'ใช้ได้กับรูปแบบวันที่ที่ระบุเท่านั้น รูปแบบวันที่ในบันทึกของฉันอยู่ด้านล่าง: [2/9/17 13: 30: 35: 552 EST] คำสั่งที่ฉันเรียกใช้ข้างต้นไม่ทำงาน .. แต่เมื่อฉันทดสอบรูปแบบวันที่อื่น …
1 shell  awk 

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