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

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

6
หยิบเนื้อหาบางอย่างของไฟล์
ดังนั้นฉันรู้ว่าเครื่องมือมีอยู่สำหรับปัญหานี้เพราะฉันเคยได้ยินเกี่ยวกับพวกเขา แต่ฉันไม่รู้ว่าพวกเขาคืออะไร ฉันต้องการทำอะไรบางอย่างเช่นกรองข้อมูลทั้งหมดยกเว้นชื่อผู้ใช้ใน / etc / passwd ตัวอย่างเช่นฉันต้องการคว้า user1, user2 และ user3 จากไฟล์ต่อไปนี้ ในกรณีนี้ตรรกะอาจเป็น "หยิบข้อความถึง ':' แรกในแต่ละบรรทัดของไฟล์" user1:x:1:4 user2:x:2:5 user3:x:3:6 ผลลัพธ์จะเป็น: user1 user2 user3
9 files  sed  awk  cut 

1
ตัวคั่นฟิลด์สองตัว (โคลอนและช่องว่าง) ใน awk
เราจะระบุตัวคั่นฟิลด์สองฟิลด์ในคำสั่ง awk เมื่อหนึ่งในนั้นคือช่องว่างได้อย่างไร ฉันคิดว่าสิ่งนี้สามารถทำได้โดยใช้เงื่อนไข if-else ฝังตัวใน awk แต่ฉันไม่แน่ใจเกี่ยวกับคำสั่งที่แน่นอน ไฟล์ตัวอย่างมีดังนี้: cat test.txt Swapnil Engineer 20000 Avinash:Doctor:30000 Dattu GovntJob 50000 Amol:Master:10000 ฉันต้องการพิมพ์คอลัมน์ที่สอง ($ 2) ผลลัพธ์ที่คาดหวังคือ: Engineer Doctor GovntJob Master เมื่อฉันพยายามใส่ทั้งช่องว่างและโคลอนเป็นตัวคั่นฟิลด์มันล้มเหลวด้วยข้อผิดพลาดทางไวยากรณ์: awk -F[ :] '{print $2}' test.txt awk: cmd. line:1: :] awk: cmd. line:1: ^ syntax error เราจะใช้ตัวคั่นฟิลด์สองฟิลด์และใช้ฟังก์ชันการทำงาน awk ได้อย่างไร
8 awk 

4
แทนที่หลายบรรทัดในไฟล์ข้อความด้วยรูปแบบคงที่
โอเคกำลังมองหาวิธีที่รวดเร็วในการทำสิ่งนี้ ฉันมีรายการหมายเลขบรรทัดที่ต้องเปลี่ยนแปลงในไฟล์ข้อมูลตัวอักษร รูปแบบ 16 บิตในบรรทัดนั้นสามารถเป็นอะไรก็ได้ แต่ฉันต้องเปลี่ยนเพื่อเปลี่ยนเป็นอ่านXXXXXXXXXXXXXXXXตามหมายเลขบรรทัดเท่านั้น อีกครั้งฉันมีรายการหมายเลขบรรทัดยาวฉันรู้ว่าจำเป็นต้องเปลี่ยน ไม่มีรูปแบบที่สังเกตเห็นได้สำหรับบรรทัดที่จำเป็นต้องเปลี่ยน (ฉันไม่ได้เขียนรูปแบบข้อมูล แต่ฉันรู้ว่าต้องเปลี่ยนบรรทัดใดเพื่ออ่าน X ทั้งหมด) ฉันอ่านคำตอบมากมายที่นี่และไม่มีใครจัดการเรื่องนี้ได้ หากยังไม่ชัดเจนฉันจะใช้อีกวิธีหนึ่ง ... เปลี่ยนสาย 26115, 32198, 37256, 40001, 40023 XXXXXXXXXXXXXXXในแฟ้มที่จะอ่าน ฉันมีมากกว่า 100,000 บรรทัดที่ต้องเปลี่ยนไฟล์ 1.9 ล้านบรรทัด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.