ผมพยายามที่จะคิดออกวิธีการแก้ปัญหาหานี้คำถาม ฉันต้องการที่จะใช้awk
สำหรับการแก้ปัญหา
ไฟล์อินพุตของฉันเป็นดังนี้
-bash-3.2$ cat file
ramesh
ramesh_venkat
ramesh3_venkat3
ramesh4
ramesh5
venkat
venkat3
venkat4
ฉันใช้awk
คำสั่งเพื่อแยกค่าที่สองหลังจาก_
ดังต่อไปนี้
awk -F "_" '{print $2}' file
อย่างไรก็ตามแม้ว่าคำสั่งข้างต้นจะพิมพ์ค่าที่ถูกต้องฉันได้รับบรรทัดว่างในผลลัพธ์ของฉัน ฉันมี 2 คำถาม
คำถามที่ 1
ฉันจะลบบรรทัดว่างในผลลัพธ์เพื่อให้ได้เฉพาะvenkat
และvenkat3
ในผลลัพธ์ได้อย่างไร
ถ้าฉันใช้printf
แทนที่จะเป็นของprint
ฉันawk
ฉันจะได้venkatvenkat3
ผลลัพธ์ที่ฉันไม่ต้องการบรรลุ ฉันต้องการผลลัพธ์เช่น
venkat
venkat3
คำถามที่ 2
การใช้ค่าเหล่านั้นเป็นอาเรย์แบบเชื่อมโยงหรือบางอย่างฉันจะค้นหาว่าค่านั้นเกิดขึ้นจริงใน$1
คอลัมน์ได้อย่างไร
ฉันต้องการที่จะบรรลุสิ่งที่ต้องการ
awk -F "_" '$2==1{print $1}' file
แก้ไข
ฉันไม่ได้สังเกตawk
วิธีแก้ปัญหาของ Stephane มันทำในสิ่งเดียวกันกับที่ฉันได้พูดไปรึเปล่า?
awk
ไม่ได้ทำในสิ่งเดียวกัน_
วิธีการของคุณสันนิษฐานว่าคำเท่านั้นที่สามารถที่มีอยู่ในอีกหากมีการแยกออกจากกัน ในขณะที่เป็นจริงเช่น OP ของทุกคำตอบที่โพสต์ยังจัดการกับกรณีเช่นและไม่เพียง แต่doglion
dog_lion