ใช้ awk ดึง 3 ฟิลด์สุดท้ายของแต่ละบรรทัดออกมา

awk วันละคำ(สั่ง) วันนี้เสนอวิธี …

การดึง 3 ฟิลด์สุดท้ายของแต่ละบรรทัดออกมา

ตัวอย่างเช่น ต้องการ 3 ฟิลด์สุดท้ายของไฟล์ /etc/passwd โดยแต่ละฟิลด์คั่นด้วยเครื่องหมาย :

ตัวอย่างไฟล์ /etc/passwd

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
...

ใช้คำสั่ง awk

$ awk 'BEGIN {FS=":"};{print $(NF-2)" "$(NF-1)" "$NF}' /etc/passwd
root /root /bin/bash
bin /bin /sbin/nologin
daemon /sbin /sbin/nologin
adm /var/adm /sbin/nologin
lp /var/spool/lpd /sbin/nologin
...

คำอธิบาย

  • FS (field separators) กำหนดว่าแต่ละฟิลด์คั่นด้วยอะไร ถ้าไม่กำหนดคือคั่นด้วยเว้นวรรค
  • NF (total number of fields) จำนวนฟิลด์ของแต่ละบรรทัด
  • $NF ฟิลด์สุดท้าย
  • $(NF-1) ฟิลด์รองสุดท้าย
  • $(NF-2) ฟิลด์ถัดมาจากรองสุดท้าย

ข้อควรระวัง อย่าสับสนระหว่างเครื่องหมายวงเล็บกลม () กลับวงเล็บปีกกา {}

ข้อมูลเพิ่มเติม

Leave a Reply

Your email address will not be published.