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

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

4
วิธีการลบไฟล์. exe ทั้งหมดจากไดเรกทอรีย่อยทั้งหมดของไดเรกทอรีปัจจุบันซ้ำ ๆ ?
ฉันมี USB ที่มีไฟล์สำคัญ อย่างไรก็ตามมันถูกแทรกซึมด้วยไฟล์. exe ที่ไม่พึงประสงค์ (อาจเป็น virsuses) ในแต่ละโฟลเดอร์ย่อย ตั้งแต่ฉันอยู่บนเครื่อง Linux ไฟล์ exe จะไม่ส่งผลกระทบต่อฉัน อย่างไรก็ตามฉันต้องการลบพวกเขา (เพื่อความปลอดภัยส่วนบุคคล) ดังนั้นฉันจะทำอย่างไรโดยใช้คำสั่ง Linux หรือเชลล์ / AWK หรือสคริปต์ Python
1 linux  shell  script  awk  rm 

1
sed / awk: แก้ไขไฟล์ต้นฉบับหรือไม่
ฉันพยายามเขียนสคริปต์การเปลี่ยนแปลงบางอย่างที่ฉันต้องทำกับไฟล์ config สองสามตัว เป็นมูลค่าการกล่าวขวัญว่าฉันเป็นผู้เชี่ยวชาญที่มีทั้ง sed และ awk แม้ว่าฉันจะดีกว่ากับ sed ตอนนี้ฉันกำลังทำ: sed '/setting.name/c setting.name: newvalue' </etc/foo.conf >tmpfile.tmp && mv tmpfile.tmp /etc/foo.conf แต่แน่นอนว่ามีวิธีที่ดีกว่า บางทีด้วย awk?
1 sed  awk 

1
วิธีการเรนเดอร์สองคอลัมน์เพื่อรักษาช่องว่างทั้งหมดหลังจากคอลัมน์แรกด้วย awk หรือทางเลือก?
ผลลัพธ์ของฉันมาในรูปแบบที่มนุษย์อ่านได้ด้วยช่องว่างหนึ่งช่องแล้วตามด้วยชื่อไดเรกทอรี: ฉันกำลังใช้ ... awk '{ printf "%-20s %-40s\n", $1, $2 }' อินพุต 1G foo 1.5M foo baz 5K foo spaces in this directory เอาท์พุต 1G foo 1.5M foo 5K foo ต้องการ 1G foo 1.5M foo baz 5K foo spaces in this directory วิธีการแบ่งออกเป็นสองคอลัมน์ด้วยตัวคั่นช่องว่างการรักษาช่องว่างทั้งหมดในคอลัมน์ที่สองโดยใช้ awk หรือทางเลือก?
1 shell  awk 

1
awk ถูก จำกัด ให้ทำงานเพียงหนึ่งบรรทัด?
ชอบในเรื่อง สมมติว่าฉันมีไฟล์ที่มี: * aaa ABC DEF 55 * ccc ABC RET 33 และฉันจะรู้ว่ามันมีความเป็นไปได้ที่จะทำให้คำสั่งถ้า $ 1 == "* aaa" แล้วพิมพ์ $ 4 จากบรรทัดถัดไป ฉันรู้ว่าหนึ่งในวิธีแก้ปัญหาอาจเป็นไฟล์คอนแวนต์สำหรับเอาต์พุตนี้: * aaa ABCDEF 55 * ccc ABCRET 33 ใช้ "*" เป็นตัวคั่นบรรทัด แต่ฉันต้องการหลีกเลี่ยงสิ่งนี้ ขอแสดงความนับถือลูคัส
1 awk 

1
SED / AWK / PERL (ผู้ใช้ GNU) - วิธีแทนที่รูปแบบ A แต่ไม่ใช่รูปแบบ B
ก่อนอื่นฉันใช้ GNU userland เพื่อให้คุณสามารถสมมติว่าฉันใช้ Bash, GNU coreutils ... ฉันมี HTML และฉันต้องการเปลี่ยนแปลงทั้งหมด href="foobarz" เข้าไป href="" อย่างไรก็ตามฉันไม่ต้องการเปลี่ยนบรรทัดที่มีคำว่าcss(ไม่ต้องตรงตามตัวพิมพ์ใหญ่ - เล็ก) 'href="fooCsSbarz"' ควรยังคงไม่เปลี่ยนแปลง ฉันกำลังใช้คำสั่ง $ cat foo.html | sed -e 's/href="[^"]*"/href=""/g' > bar.html แต่ไม่สามารถเก็บบรรทัดเหล่านั้นที่มีคำว่าcss(ไม่คำนึงถึงตัวอักษรพิมพ์เล็กและใหญ่) จริงๆแล้วยินดีต้อนรับเครื่องมือใด ๆ ที่มีใน * nix เช่น sed, awk, perl ... ขอบคุณสำหรับความช่วยเหลือของคุณ!
1 sed  perl  awk  gnu 

1
ที่อยู่ IP ระบุทศนิยมเป็น / 8 หรือ / 16 โดยใช้เครื่องหมาย bash, sed หรือ awk?
ฉันมีไฟล์อินพุตที่มีรายการที่อยู่ ip และ ip_counts (พารามิเตอร์บางตัวที่ฉันใช้ภายใน) ไฟล์มีลักษณะดังนี้ 202.124.127.26 2135869 202.124.127.25 2111217 202.124.127.17 2058082 202.124.127.16 2014958 202.124.127.20 1949323 202.124.127.24 1933773 202.124.127.27 1932076 202.124.127.22 1886466 202.124.127.18 1882955 202.124.127.21 1803528 202.124.127.23 1786348 119.224.129.200 1776592 119.224.129.211 1639325 202.124.127.19 1479198 119.224.129.201 1145426 202.49.175.110 1133354 119.224.129.210 1119525 68.232.45.132 1085491 119.224.129.209 1015078 131.203.3.8 857951 202.162.73.4 817197 207.123.58.125 785326 …

1
วิธีการสร้างคำสั่ง grep ด้วยอาร์กิวเมนต์ตัวแปรใน bash?
ฉันพยายามทำสิ่งนี้ใน bash: grep ( date | awk '{print "2006-" $6}' ) /some/file/here แต่ไวยากรณ์ที่ไม่ถูกต้อง เป้าหมายคือการ grep / some / file / ที่นี่สำหรับรูปแบบ 2006-2011 โดย 2011 เป็นปีปัจจุบัน
bash  grep  awk  xargs 

4
การเปลี่ยนหลายบรรทัดเป็นบรรทัดเดียวด้วยช่องว่างใน linux
ฉันมีข้อมูลต่อไปนี้ที่มีหลายบรรทัด username: joe empid: 1111 status: resigned username: tom emid: 1234 username: kate empid: 2222 status: resigned สิ่งที่ฉันต้องการคือการรับข้อมูลไปยังไฟล์อื่นดังต่อไปนี้ username: joe,empid: 1111,status: resigned username: tom,empid: 1234 username: kate,empid: 2222,status: resigned ด้วยความปรารถนาดี KJ
linux  bash  awk 

0
awk และตัดไฟล์ที่มีขนาดใหญ่มาก
ฉันต้องแยกคอลัมน์ข้อมูลจากไฟล์ที่มีขนาดใหญ่มาก & gt; 100GB ฉันรู้วิธีใช้ awk และ cut คำสั่งทำ แต่ต้องการทราบว่ามีประสิทธิภาพมากกว่า (จากมุมมองความเร็ว) สำหรับภารกิจดังกล่าวหรือไม่
awk  textfiles  cut 

2
วิธีเขียน `awk here document`
ฉันมีสคริปต์ทุบตี: #!/bin/bash gawk -f realmap.awk realmap.log | column -ts: > realmap.csv gnuplot <<-_EOF_ set term png set out 'realmap.png' set xlabel 'index' set ylabel 'bytes' set style data lp plot 'realmap.csv' u 1:2 t col, '' u 1:3 t col, '' u 1:4 t col, '' u 1:5 t col, …
awk 

5
นิพจน์ปกติเพื่อค้นหา IP ของผู้ส่งโดยใช้ grep หรือภาษาอื่น
ฉันมีไฟล์อินพุตที่มี: 19:04:01.631948 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [none], proto UDP (17), length 48) 181.173.82.61.1985 > 250.66.33.195.1985: HSRPv0-hello 20: state=active group=72 addr=171.64.72.1 hellotime=2s holdtime=7s priority=120 auth="vlan72^@^@" 19:04:02.061482 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [none], proto UDP (17), length 48) 181.173.82.60.1985 > 250.66.33.195.1985: …
linux  shell  regex  grep  awk 

2
awk + string ที่ตรงกันหลังตัวคั่น“ =”
ฉันมีปัญหากับไวยากรณ์ awk ต่อไปนี้ echo " param1 param2 param3 = param1 AA , AB , AC , AD " | awk -F"=" '$2~/AA|AB|AC|AD/{print "passed"}' พิมพ์ awk ผ่านไปแล้ว แต่ไม่ใช่ shuld เพราะหลังจาก "=" ฉันมี param1 และไม่ใช่ "AA" หรือ AB "เป็นต้น เป้าหมายของ awk คือการพิมพ์ผ่านหากสตริงหลัง "=" คือ AA หรือ AB หรือ AC หรือ AD และถ้าฉันมีอย่างอื่นหลังจาก …
awk 

2
คุณจะได้ส่วนที่เจาะจงของคำในไฟล์โดยใช้ awk ได้อย่างไร
ฉันมีสคริปต์ที่เป็นเช่นนี้: script.m rng('shuffle'); load samples123/stage17/resamp_stage.mat indarray = str2num(getenv('arrayindex')); index = (indarray-1)*4+1:(indarray)*4 samplenow = samplestage(index,:); for i = 1:4 ind = index(i); i num = 123; sampleind = samplenow(i,:); opt.Ndrag = 1; a = cputime; outsmpl = continue_dragon(opt,beta,sampleind,stage,num,covsmpl,ind); b = cputime; b-a toc end ฉันต้องการดึงเฉพาะ 'stage17' ซึ่งอยู่ในบรรทัดที่สอง ฉันพยายามต่อไปนี้: awk '/samples123/{print $2}' …
bash  unix  awk 

3
ค้นหาในบันทึกจากชั่วโมงที่แล้ว
ฉันต้องการ bash script เพื่อค้นหาในคำบันทึกล้มเหลวและล้มเหลว แต่จากชั่วโมงที่แล้วเท่านั้น cut -c 5- /var/log/mail.log | awk '($0 >= from)' from="$(LC_TIME=C date +'%_d %H:%M:%S' -d -1hour)" |grep -i 'Failed:\|failure' ตัวอย่างไฟล์บันทึก Nov 1 01:00:00 localhost pushmail[55555]: 666666666666: Failed Nov 2 15:00:00 localhost pushmail[55556]: 666666666666: Failed Nov 3 11:00:00 localhost pushmail[55557]: 666666666666: Failed Nov 3 12:00:00 localhost pushmail[55558]: …
linux  bash  logging  awk 

1
ลบแถวด้วยบรรทัดว่าง csv
1 1479870 5022248660 1 1911574 3015889020 8 1 1569783 5029193930 ผลลัพธ์ควรเป็น 1 1911574 3015889020 8 ฉันใช้ awk '$4!=""' number.csv แต่มันไม่ทำงาน ใครช่วยบอกเบาะแสให้ฉันได้บ้าง
bash  unix  csv  awk 

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