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

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

6
การจัดเรียงคอลัมน์ใหม่โดยใช้ awk
ฉันพยายามย้ายคอลัมน์ที่ 7 ของไฟล์ csv ไปยังจุดสิ้นสุดโดยใช้ awk -F '{print $1,$2,$3,$4,$5,$6,$8,$9,$10,$11,$7}',OFS= "$file" โดยที่ $ file เป็นไฟล์. csv ในไดเรกทอรี อย่างไรก็ตามผลลัพธ์คือ awk: ^ syntax error ไม่มีใครรู้วิธีแก้ไขข้อผิดพลาดนี้หรือไม่?

8
awk หรือ sed เพื่อพิมพ์เล็ก / พิมพ์ใหญ่อักขระเดียวในสตริง?
มีวิธีการตัวพิมพ์ใหญ่ / ตัวพิมพ์เล็กเพียงตัวเดียวในบางสาย? ตัวอย่างอินพุต: syslog_apr_24_30 syslog_mar_01_17 ผลลัพธ์ที่ต้องการ: syslog_Apr_24_30 syslog_Mar_01_17 หมายเหตุโปรดเริ่มต้นตัวพิมพ์ใหญ่ของเดือน ฉันลองแล้วawkแต่ยังไม่ดีพอที่จะทำให้มันทำงานได้
13 bash  sed  awk 

3
วิธีการ sed เฉพาะบรรทัดที่มีสตริงที่กำหนด?
INPUT: Select ASDF 325 sdfg sdflk lk Select TRG 46sdg rasdftz fsgs 45 Select ASDF 6ffg sdfg 4456 sdrg เอาท์พุท: Select ASDF 325 XXXX sdflk lk Select TRG 46sdg rasdftz fsgs 45 Select ASDF 6ffg XXXX 4456 sdrg ดังนั้นในระยะสั้นฉันต้อง "sed" "sdfg" ถึง "XXXX" แต่: เฉพาะในบรรทัดที่มีสตริง "Select ASDF" .. ฉันจะทำสิ่งนี้ได้อย่างไร (sed, …
13 sed  awk 

3
นับบันทึกรูปแบบการจับคู่ด้วย Awk
ดังนั้นผมจึงบอกว่าจะทำอย่างไรlast > lastloggedinที่จะสร้างไฟล์ที่แสดงให้เห็นว่าการเรียนเข้าสู่ระบบล่าสุดตั้งแต่รีบูตระบบที่ผ่านมาและตอนนี้ฉันขอให้เขียนสคริปต์ Awk ซึ่งเป็นชื่อmyawkที่นับ / กำหนดวิธีการหลายสายของ มีสตริงlastloggedinCFS264 ฉันเคยทำ grep -c CFS264 lastloggedin

4
เริ่มต้นและสิ้นสุดด้วยคำสั่ง awk
ตามคู่มือ awk, BEGIN และ END ไม่ได้ใช้เพื่อจับคู่อินพุต แต่ให้ข้อมูลการเริ่มต้นและล้างข้อมูลให้กับสคริปต์ awk นี่คือตัวอย่างที่ได้รับ: ls -l | \ awk 'BEGIN { print "Files found:\n" } /\<[a|x].*\.conf$/ { print $9 }' Files found: amd.conf antivir.conf xcdroast.conf xinetd.conf ก่อนอื่นนี้พิมพ์สตริงเพื่อส่งออก จากนั้นจะตรวจสอบอินพุตสำหรับการจับคู่รูปแบบโดยที่อินพุตเริ่มต้นด้วย a หรือ x ตามด้วยอักขระใด ๆ หนึ่งหรือหลายครั้งตามด้วย. conf สำหรับการแข่งขันใด ๆ คอลัมน์ที่ 9 จะถูกพิมพ์ ความจริงที่ว่าเราถูกบังคับให้ใช้เริ่มต้นที่นี่นั่นหมายความว่า awk สามารถใช้ได้กับฟังก์ชั่นการพิมพ์ส่วนใหญ่ที่มี BEGIN หรือ …
13 awk 

2
แทนที่พื้นที่ว่างค่าที่หายไปด้วยศูนย์
ฉันมีไฟล์ข้อความที่คั่นด้วยแท็บ input.txt ประมาณ 30K บรรทัดฉันต้องการตรวจสอบแต่ละแถว (s1..s30K บรรทัด) สำหรับค่าที่หายไป (เช่นพื้นที่ว่าง) และเติมค่าที่หายไปด้วยค่าศูนย์ดู out.txt input.txt id no1 no2 no3 no4 s1 23 34 45 12 s2 4 4 s3 4 8 0 out.txt id no1 no2 no3 no4 s1 23 34 45 12 s2 0 4 4 0 s3 4 0 8 0

3
ฉันสามารถย่อตัวกรองนี้ให้สั้นลงซึ่งพบว่าขนาดของดิสก์เกิน 100G หรือไม่
เป้าหมายของฉันคือการได้รับแผ่นดิสก์มากกว่า 100G จาก lsblk ฉันใช้งานได้ แต่มันอึดอัดใจ ฉันค่อนข้างมั่นใจว่ามันสั้นลงได้ ไม่ว่าจะโดยการใช้บางอย่างที่แตกต่างจาก lsblk หรือฉันอาจกรองตัวเลขที่มนุษย์อ่านได้โดยตรงด้วย awk นี่คือสิ่งที่ฉันรวบรวม: lsblk | grep disk | awk '{print$1,$4}' | grep G | sed 's/.$//' | awk '{if($2>100)print$1}' ส่งเอาต์พุตเฉพาะส่วน sdx และ nvmexxx ของดิสก์ที่มีขนาดใหญ่กว่า 100G สิ่งที่ฉันต้องการ ฉันมีความสุขกับมัน แต่ฉันกระตือรือร้นที่จะเรียนรู้เพิ่มเติมจากคุณกูรู😉
12 awk  grep  disk  lsblk 

6
ฉันจะเพิ่มสตริงแบบสุ่มสำหรับแต่ละบรรทัดได้อย่างไร
ฉันกำลังพยายามเพิ่มสตริงแบบสุ่มสำหรับแต่ละบรรทัดในขณะที่ทำงาน: awk '{print "name" "'$ran'" "-"$0}' 'myfile' ก่อนหน้านั้นสตริงสุ่มจะถูกสร้างขึ้น: ran="$(tr -dc '[:alnum:]' </dev/urandom | head -c 6)" ปัญหาคือมันจะพิมพ์สตริงสุ่มเดียวกันสำหรับแต่ละบรรทัด: nameGQz3Ek- nameGQz3Ek- nameGQz3Ek- ฉันควรทำอย่างไรเพื่อให้ได้สตริงสุ่มที่แตกต่างกันสำหรับแต่ละบรรทัด
12 awk 


8
จะเรียงลำดับคอลัมน์ตามบรรทัดแรกได้อย่างไร
ฉันต้องการเรียงลำดับคอลัมน์ของชุดข้อมูลที่มีขนาดใหญ่มาก (1,000 บรรทัดและ 700,000 คอลัมน์) ตัวอย่างเช่นคอลัมน์ของฉันถูกจัดเรียงแบบสุ่มเช่น: col1 col4 col3 col2 และฉันต้องเรียงลำดับนั้น ฉันลองใช้คำสั่งแล้ว แต่ไม่ประสบความสำเร็จ ตัวอย่าง: ID M2 M5 M8 M1 M3 M9 .....M7000000 Animal1 1 0 2 1 0 2 .....1 Animal2 0 1 2 0 1 1 .....0 Animal3 2 1 0 1 2 1 .....0 . . . . …

10
สคริปต์ที่ลบช่องว่างพิเศษระหว่างตัวอักษรในข้อความ
ฉันมีเอกสารข้อความที่มีข้อความมากมายซึ่งเพิ่มพื้นที่พิเศษหลังจากตัวอักษรทุกตัว! ตัวอย่าง: T h e b o o k a l s o h a s a n a n a l y t i c a l p u r p o s e w h i c h i s m o r e i m p o …

3
การรวมสองไฟล์ทีละหนึ่งคอลัมน์
ฉันมีไฟล์ขนาดใหญ่ 2 ไฟล์ (3000 คอลัมน์, 15,000 แถว) ของรูปแบบต่อไปนี้ file1 (คั่นด้วยแท็บ): 1/0 0/0 0/0 0/0 1/1 0/0 1/1 0/1 0/0 file2 (คั่นด้วยแท็บ): 3 5 2 1 7 10 3 4 3 ฉันต้องการรวมค่าจากคอลัมน์แรกของแต่ละไฟล์กับตัวคั่น ":" จากนั้นไปยังคอลัมน์ที่สองสามและอื่น ๆ ผลลัพธ์ที่ต้องการ (คั่นด้วยแท็บ): 1/0:3 0/0:5 0/0:2 0/0:1 1/1:7 0/0:10 1/1:3 0/1:4 0/0:3 ประสิทธิภาพไม่สำคัญดังนั้นภาษาใดก็ได้ ฉันขอโทษถ้าสิ่งนี้ถูกถามมาก่อน

3
คุณจะลบอักขระ dot ออกจากสตริงโดยไม่เรียกใช้ sed หรือ awk อีกครั้งได้อย่างไร
ฉันมีไฟล์ชื่อhostlist.txtที่มีข้อความเช่นนี้: host1.mydomain.com host2.mydomain.com anotherhost www.mydomain.com login.mydomain.com somehost host3.mydomain.com ฉันมีสคริปต์เล็ก ๆ ต่อไปนี้: #!/usr/local/bin/bash while read host; do dig +search @ns1.mydomain.com $host ALL \ | sed -n '/;; ANSWER SECTION:/{n;p;}'; done <hostlist.txt \ | gawk '{print $1","$NF}' >fqdn-ip.csv ซึ่งส่งออกไปที่fqdn-ip.csv: host1.mydomain.com.,10.0.0.1 host2.mydomain.com.,10.0.0.2 anotherhost.internal.mydomain.com.,10.0.0.11 www.mydomain.com.,10.0.0.10 login.mydomain.com.,10.0.0.12 somehost.internal.mydomain.com.,10.0.0.13 host3.mydomain.com.,10.0.0.3 คำถามของฉันคือฉันจะลบ.ก่อนจุลภาคโดยไม่ต้องกล่าวอ้างsedหรือgawkอีกครั้งหรือไม่ มีขั้นตอนที่ฉันสามารถแสดงในสายที่มีอยู่sedหรือgawkสายที่จะตัดจุดได้หรือไม่? hostlist.txt จะมีโฮสต์ 1,000 แห่งดังนั้นฉันต้องการให้สคริปต์ของฉันเร็วและมีประสิทธิภาพ

4
แยกอักขระก่อน () โดยใช้ grep
ฉันต้องการแยกอักขระก่อนอักขระ '(' โครงสร้างไฟล์ของฉันคือ: ดอกกุหลาบ (ดี) OOK เดซี่ () ไม่มี ลิลลี่ (ไม่ดี) ปรับ ดอกทานตะวัน () มีความสุข ฉันต้องการไฟล์ที่ส่งออกในรูปแบบของ: rose daisy lilly sunflower ใครสามารถบอกคำสั่งนี้ ..... awk, grep หรือ sed ดีกว่า ...
12 sed  awk  grep 

1
วิธีรวมสคริปต์หลายบรรทัด awk ในเชลล์สคริปต์
คำถามของฉันคือความต่อเนื่องของ วิธีแยกไฟล์เพื่อแยกตัวเลข 3 หลักที่เก็บใน "หมายเลขกลุ่ม" ฉันพยายามรวมในเชลล์สคริปต์ชุดเดียวของคำสั่งที่ แยกมาตรฐานยุโรปเพื่อแยกลำดับการทดสอบ แปลงการเข้ารหัสข้อความเป็น utf8 ประมวลผลผลลัพธ์ด้วยรูทีน awk ที่ให้ไว้กับฉันในโพสต์ด้านบน บันทึกเนื้อหาในไฟล์ปลายทาง ฉันเขียนสคริปต์ด้านล่างอย่างไม่แน่นอน ผมสามารถที่จะบรรลุเท่านั้นstep 1และstep 4แต่ไม่ว่ามิได้step 2 step 3ฉันสงสัยว่าควรสร้างไฟล์ระดับกลาง (ชั่วคราว) หรือไม่ ฉันพยายามเก็บผลลัพธ์ของขั้นตอนกลางไว้ในตัวแปร แต่ไม่ประสบความสำเร็จ ความช่วยเหลือใด ๆ ก็จะเป็นประโยชน์ในเรื่องข้อผิดพลาดและวิธีที่ดีที่สุดในการทำเช่นนี้ #!/bin/bash # creating the Latex code for a test procedure awkcommand= "/usr/bin/awk ' $1 == "Group" {printf("\\section{%s %d}\n", $1, $2); next} { title …
12 shell-script  awk 

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