คำสั่ง Pipe, Grep และ Sort ใน Linux/Unix พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
คำสั่ง pipe, grep และ sort ใน Linux และ Unix ใช้สำหรับเชื่อมต่อและกรองข้อความ: pipe ใช้สำหรับส่งเอาต์พutของคำสั่งหนึ่งไปยังอีกคำสั่งหนึ่ง grep ใช้ค้นหารูปแบบ และ sort ใช้จัดเรียงบรรทัด ในขณะที่ filters ใช้สำหรับแปลงข้อมูลระหว่างคำสั่งเหล่านั้น

Pipes, grep และ sort เป็นเครื่องมือที่ใช้บ่อยที่สุดบนระบบ ลินุกซ์ บรรทัดคำสั่งนั้นมีประโยชน์ เพราะช่วยให้คุณเชื่อมต่อคำสั่งเล็กๆ เข้าด้วยกันเป็นเวิร์กโฟลว์ที่มีประสิทธิภาพ หน้านี้จะอธิบายแต่ละวิธีพร้อมตัวอย่างการใช้งาน จากนั้นจะแสดงวิธีที่ตัวกรองเชื่อมโยงวิธีต่างๆ เข้าด้วยกัน
ไปป์ใน Linux คืออะไร?
คำสั่ง `pipe` ใน Linux ช่วยให้คุณสามารถใช้คำสั่งสองคำสั่งขึ้นไปร่วมกัน โดยที่ผลลัพธ์ของคำสั่งหนึ่งจะถูกนำไปใช้เป็นอินพุตสำหรับคำสั่งถัดไป กล่าวโดยย่อคือ ผลลัพธ์ของแต่ละกระบวนการจะถูกส่งตรงไปยังกระบวนการถัดไปในฐานะอินพุต เหมือนกับท่อส่งข้อมูล สัญลักษณ์ '|' แทนคำสั่ง `pipe`
Pipe ช่วยให้คุณรวมคำสั่งสองคำสั่งขึ้นไปเข้าด้วยกันและเรียกใช้ตามลำดับ คุณสามารถใช้คำสั่งที่มีประสิทธิภาพเพื่อทำงานที่ซับซ้อนได้อย่างรวดเร็ว
ให้เราเข้าใจสิ่งนี้ด้วยตัวอย่าง
เมื่อคุณใช้คำสั่ง 'cat' เพื่อดูไฟล์ที่มีหลายหน้า ข้อความแจ้งเตือนจะข้ามไปยังหน้าสุดท้ายของไฟล์อย่างรวดเร็ว และคุณจะไม่เห็นเนื้อหาตรงกลาง
เพื่อหลีกเลี่ยงปัญหานี้ คุณสามารถส่งเอาต์พุตของคำสั่ง 'cat' ไปยัง 'less' ซึ่งจะแสดงเนื้อหาเพียงความยาวการเลื่อนเดียวในแต่ละครั้ง
cat filename | less
ภาพประกอบจะช่วยให้เข้าใจได้ชัดเจนยิ่งขึ้น แผนภาพด้านล่างแสดงให้เห็นว่าท่อส่งผ่านผลลัพธ์ของคำสั่งหนึ่งไปยังอีกคำสั่งหนึ่งได้อย่างไร
คำสั่ง 'pg' และ 'เพิ่มเติม'
นอกจากใช้คำว่า 'less' แล้ว คุณยังสามารถใช้คำสั่ง pg หรือ more ได้อีกด้วย:
cat Filename | pg
or
cat Filename | more
จากนั้นคุณสามารถดูไฟล์ในรูปแบบที่เข้าใจง่ายและเลื่อนลงได้โดยการกดปุ่ม Enter ภาพหน้าจอด้านล่างแสดงไฟล์ที่แบ่งหน้าด้วยคำสั่ง more
คำสั่ง 'grep'
สมมติว่าคุณต้องการค้นหาข้อมูลเฉพาะ เช่น รหัสไปรษณีย์ ในไฟล์ข้อความ
คุณสามารถอ่านเนื้อหาแบบคร่าวๆ ด้วยตนเองได้ trace ข้อมูล ตัวเลือกที่ดีกว่าคือการใช้ grep คำสั่งนี้จะสแกนเอกสารเพื่อค้นหาข้อมูลที่ต้องการและแสดงผลลัพธ์ในรูปแบบที่คุณต้องการ
ไวยากรณ์:
grep search_string
มาดูการทำงานจริงกัน ภาพหน้าจอข้างล่างแสดงผลลัพธ์ของการค้นหา
ในที่นี้ คำสั่ง grep ได้ค้นหาสตริง 'Apple' และ 'Eat' ในไฟล์ 'sample' สามารถใช้ตัวเลือกต่อไปนี้กับคำสั่งนี้ได้
| ตัวเลือกเสริม (Option) | ฟังก์ชัน |
|---|---|
| -v | แสดงบรรทัดทั้งหมดที่ไม่ตรงกับสตริงที่ค้นหา |
| -c | แสดงเฉพาะจำนวนบรรทัดที่ตรงกัน |
| -n | แสดงเส้นที่ตรงกันและหมายเลข |
| -i | ตรงกันทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก |
| -l | แสดงเฉพาะชื่อไฟล์ด้วยสตริง |
ลองใช้ตัวเลือก '-i' กับไฟล์เดียวกันกับที่ใช้ข้างต้นดู ภาพหน้าจอด้านล่างแสดงผลลัพธ์ที่ไม่คำนึงถึงตัวพิมพ์ใหญ่เล็ก
เมื่อใช้ตัวเลือก '-i' คำสั่ง grep จะกรองสตริง 'a' (โดยไม่คำนึงถึงตัวพิมพ์ใหญ่เล็ก) ออกจากทุกบรรทัด
คำสั่ง 'เรียงลำดับ'
คำสั่งนี้ช่วยในการจัดเรียงเนื้อหาของไฟล์ตามลำดับตัวอักษร
ไวยากรณ์สำหรับคำสั่งนี้คือ:
sort Filename
ลองพิจารณาเนื้อหาของไฟล์ที่แสดงด้วยคำสั่ง cat ด้านล่างนี้
การใช้คำสั่ง sort จะจัดเรียงบรรทัดเหล่านั้นตามลำดับตัวอักษร ดังที่แสดงด้านล่าง
นอกจากนี้ยังมีส่วนขยายเพิ่มเติมสำหรับคำสั่งนี้ ซึ่งแสดงไว้ด้านล่าง
| ตัวเลือกเสริม (Option) | ฟังก์ชัน |
|---|---|
| -r | Reverseการเรียงลำดับ |
| -n | จัดเรียงเป็นตัวเลข |
| -f | การเรียงลำดับแบบไม่คำนึงถึงตัวพิมพ์ใหญ่เล็ก |
ตัวอย่างด้านล่างแสดงการเรียงลำดับเนื้อหาในไฟล์ 'abc' แบบย้อนกลับ
ตัวกรองคืออะไร?
ลินุกซ์มีคำสั่งกรองข้อมูลมากมาย เช่น awk, grep, sed, spell และ wc ตัวกรองจะรับข้อมูลจากคำสั่งหนึ่ง ทำการประมวลผลบางอย่าง และให้ผลลัพธ์ออกมา
เมื่อคุณส่งคำสั่งสองคำสั่งผ่านไปป์ไลน์ ผลลัพธ์ที่ "กรองแล้ว" จากคำสั่งแรกจะถูกส่งไปยังคำสั่งถัดไป แผนภาพด้านล่างแสดงให้เห็นว่าตัวกรองทำงานร่วมกับไปป์ไลน์ได้อย่างไร
เรามาทำความเข้าใจเรื่องนี้ด้วยตัวอย่างกัน เรามีไฟล์ชื่อ 'sample' ซึ่งแสดงด้วยคำสั่ง cat ด้านล่าง
เราต้องการไฮไลต์เฉพาะบรรทัดที่ไม่มีตัวอักษร 'a' แต่ผลลัพธ์ควรอยู่ในลำดับย้อนกลับ สำหรับการนี้ สามารถใช้ไวยากรณ์ต่อไปนี้ได้:
cat sample | grep -v a | sort -r
มาดูผลลัพธ์ที่แสดงในภาพหน้าจอข้างล่างกันครับ







.png)
.png)

