วิธีอ่าน Awk Input จาก STDIN ใน Linux - ตอนที่ 7
ในส่วนก่อนหน้าของชุดเครื่องมือ Awk เราพิจารณาการอ่านอินพุตจากไฟล์เป็นส่วนใหญ่ แต่ถ้าคุณต้องการอ่านอินพุตจาก STDIN ล่ะ
ในส่วนที่ 7 ของซีรีส์ Awk นี้ เราจะดูตัวอย่างบางส่วนที่คุณสามารถกรองเอาต์พุตของคำสั่งอื่นแทนการอ่านอินพุตจากไฟล์ได้
เราจะเริ่มต้นด้วยยูทิลิตี้ dir ที่ทำงานคล้ายกับคำสั่ง ls ในตัวอย่างแรกด้านล่าง เราใช้เอาต์พุตของคำสั่ง dir -l
เป็นอินพุตสำหรับ Awk เพื่อพิมพ์ชื่อผู้ใช้ ชื่อกลุ่ม และไฟล์ของเจ้าของที่เขา /she เป็นเจ้าของในไดเร็กทอรีปัจจุบัน:
dir -l | awk '{print $3, $4, $9;}'
ดูอีกตัวอย่างหนึ่งที่เราใช้นิพจน์ awk ในที่นี้ เราต้องการพิมพ์ไฟล์ที่เป็นของผู้ใช้ root โดยใช้นิพจน์เพื่อกรองสตริงเช่นเดียวกับในคำสั่ง awk ด้านล่าง:
dir -l | awk '$3=="root" {print $1,$3,$4, $9;} '
คำสั่งด้านบนมีตัวดำเนินการเปรียบเทียบ (==)
เพื่อช่วยเรากรองไฟล์ในไดเร็กทอรีปัจจุบันที่เป็นของผู้ใช้รูท สามารถทำได้โดยใช้นิพจน์ $3== ”root ”
ให้เราดูอีกตัวอย่างหนึ่งที่เราใช้ตัวดำเนินการเปรียบเทียบ awk เพื่อจับคู่สตริงบางตัว
ที่นี่ เราได้ใช้ยูทิลิตี้ cat เพื่อดูเนื้อหาของไฟล์ชื่อ tecmint_deals.txt และเราต้องการดูข้อเสนอประเภท เทคโนโลยี เท่านั้น ดังนั้นเราจะเรียกใช้ คำสั่งต่อไปนี้:
cat tecmint_deals.txt
cat tecmint_deals.txt | awk '$4 ~ /tech/{print}'
cat tecmint_deals.txt | awk '$4 ~ /Tech/{print}'
ในตัวอย่างด้านบน เราได้ใช้ตัวดำเนินการเปรียบเทียบค่า ~ /pattern/
แต่มีสองคำสั่งให้ลองดึงสิ่งที่สำคัญมากออกมา
เมื่อคุณรันคำสั่งด้วยรูปแบบ tech ไม่มีอะไรถูกพิมพ์ออกมาเนื่องจากไม่มี deal ประเภทนั้น แต่ด้วย Tech คุณจะได้รับดีลของ พิมพ์ เทคโนโลยี
ดังนั้นควรระมัดระวังเสมอเมื่อใช้ตัวดำเนินการเปรียบเทียบ เนื่องจากคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ดังที่เราได้เห็นข้างต้น
คุณสามารถใช้เอาต์พุตของคำสั่งอื่นแทนเป็นอินพุตสำหรับ awk แทนการอ่านอินพุตจากไฟล์ได้เสมอ ซึ่งง่ายมาก ตามที่เราได้ดูในตัวอย่างด้านบนแล้ว
หวังว่าตัวอย่างจะชัดเจนเพียงพอสำหรับคุณที่จะเข้าใจ หากคุณมีข้อกังวลใดๆ คุณสามารถแสดงความคิดเห็นได้ในส่วนความคิดเห็นด้านล่าง และอย่าลืมตรวจสอบส่วนถัดไปของซีรีส์ที่เราจะดูฟีเจอร์ awk เช่น ตัวแปร, นิพจน์ตัวเลข และ ตัวดำเนินการกำหนด