การกระจาย GNU/Linux รวมโปรแกรมมากมายสำหรับจัดการข้อความ ส่วนใหญ่จัดหาโดย GNU core utilities มีโค้งการเรียนรู้นิดหน่อย แต่ยูทิลิตี้เหล่านี้สามารถเป็นประโยชน์และมีประสิทธิภาพมากเมื่อใช้ถูกต้อง
นี่คือ 13 เครื่องมือจัดการข้อความทรงพลังที่ทุกผู้ใช้บรรทัดคำสั่งควรรู้
1. cat
Cat ออกแบบมาเพื่อ concatenate ไฟล์ แต่ใช้บ่อยที่สุดเพื่อแสดงไฟล์เดียว โดยไม่มีอาร์กิวเมนต์ cat อ่าน standard input จนกว่าจะกด Ctrl + D (จากเทอร์มินัลหรือจากเอาต์พุทโปรแกรมอื่นหากใช้ pipe) Standard input สามารถระบุได้ชัดเจนด้วย -
Cat มีตัวเลือกที่มีประโยชน์หลายอย่าง โดยเฉพาะ:
-Aพิมพ์ "$" ที่ท้ายแต่ละบรรทัด และแสดงอักขระที่พิมพ์ไม่ได้โดยใช้ caret notation-nหมายเลขบรรทัดทั้งหมด-bหมายเลขบรรทัดที่ไม่ว่าง-sลดชุดบรรทัดว่างหลายบรรทัดเหลือบรรทัดว่างเดียว
ในตัวอย่างต่อไป เรา concatenate และหมายเลขเนื้อหาของ file1, standard input, และ file3
cat -n file1 - file3
2. sort
ตามชื่อ sort เรียงลำดับเนื้อหาไฟล์ตามตัวอักษรและตัวเลข
3. uniq
Uniq รับไฟล์ที่เรียงแล้วและลบบรรทัดซ้ำ มักเชื่อมกับ sort ในคำสั่งเดียว
4. comm
Comm ใช้เปรียบเทียบไฟล์ที่เรียงแล้วสองไฟล์ บรรทัดต่อบรรทัด มันสร้างเอาต์พุทสามคอลัมน์: คอลัมน์แรกสองคอลัมน์มีบรรทัดที่เฉพาะเจาะจงไปกับไฟล์แรกและไฟล์ที่สองตามลำดับ และคอลัมน์ที่สามแสดงบรรทัดที่พบในทั้งสองไฟล์
5. cut
Cut ใช้ดึงส่วนเฉพาะของบรรทัด โดยอิงจากอักขระ ฟิลด์ หรือไบต์ มันอ่านจากไฟล์หรือ standard input หากไม่ระบุไฟล์
การตัดตามตำแหน่งอักขระ
ตัวเลือก -c ระบุตำแหน่งอักขระเดียวหรือช่วงอักขระหนึ่งหรือมากกว่า
ตัวอย่าง:
-c 3: อักขระที่ 3-c 3-5: จากอักขระที่ 3 ถึง 5-c -5หรือ-c 1-5: จากอักขระที่ 1 ถึง 5-c 5-: จากอักขระที่ 5 ถึงท้ายบรรทัด-c 3,5-7: อักขระที่ 3 และจาก 5 ถึง 7
การตัดตามฟิลด์
ฟิลด์ถูกคั่นด้วยตัวคั่น (delimiter) ที่ประกอบด้วยอักขระเดียว ระบุด้วยตัวเลือก -d ตัวเลือก -f เลือกตำแหน่งฟิลด์หรือช่วงฟิลด์หนึ่งหรือมากกว่า ใช้รูปแบบเดียวกับข้างต้น
6. dos2unix
GNU/Linux และ Unix ปกติจบบรรทัดข้อความด้วย line feed (LF) ในขณะที่ Windows ใช้ carriage return และ line feed (CRLF) ปัญหาความเข้ากันได้อาจเกิดขึ้นเมื่อจัดการข้อความ CRLF บน Linux ซึ่งเป็นที่มาของ dos2unix มันแปลงตัวสิ้นสุด CRLF เป็น LF
ในตัวอย่างต่อไป คำสั่ง file ใช้ตรวจสอบรูปแบบข้อความก่อนและหลังใช้ dos2unix
7. fold
เพื่อให้บรรทัดข้อความยาวง่ายต่อการอ่านและจัดการ คุณสามารถใช้ fold ซึ่งห่อบรรทัดให้กว้างตามที่ระบุ
Fold ตรงตามความกว้างที่ระบุอย่างเคร่งครัด โดยค่าเริ่มต้น ตัดคำหากจำเป็น
fold -w 30 longline.txt
หากการตัดคำไม่พึงประสงค์ คุณสามารถใช้ตัวเลือก -s เพื่อตัดที่ช่องว่าง
fold -w 30 -s longline.txt
8. iconv
เครื่องมือนี้แปลงข้อความจากเอนโคดดิ้งหนึ่งไปยังอีกเอนโคดดิ้งหนึ่ง ซึ่งมีประโยชน์มากเมื่อจัดการกับเอนโคดดิ้งแปลกๆ
iconv -f input_encoding -t output_encoding -o output_file input_file
- "input_encoding" คือเอนโคดดิ้งที่คุณแปลงจาก
- "output_encoding" คือเอนโคดดิ้งที่คุณแปลงไป
- "output_file" คือชื่อไฟล์ที่ iconv จะบันทึก
- "input_file" คือชื่อไฟล์ที่ iconv จะอ่าน
หมายเหตุ: คุณสามารถแสดงรายการเอนโคดดิ้งที่มีอยู่ด้วย iconv -l
9. sed
sed เป็น stream editor ที่ทรงพลังและยืดหยุ่น ใช้บ่อยที่สุดสำหรับค้นหาและแทนที่สตริงด้วยไวยากรณ์ต่อไปนี้
คำสั่งต่อไปนี้จะอ่านจากไฟล์ที่ระบุ (หรือ standard input) แทนที่ส่วนของข้อความที่ตรงกับ regular expression pattern ด้วย replacement string และส่งผลลัพธ์ไปยังเทอร์มินัล
sed s/pattern/replacement/g filename
เพื่อแก้ไขไฟล์ต้นฉบับแทน คุณสามารถใช้ธง -i
10. wc
ยูทิลิตี้ wc พิมพ์จำนวนไบต์ อักขระ คำ หรือบรรทัดในไฟล์
11. split
คุณสามารถใช้ split เพื่อแบ่งไฟล์เป็นไฟล์เล็กๆ โดยจำนวนบรรทัด โดยขนาด หรือเป็นจำนวนไฟล์เฉพาะ
การแบ่งตามจำนวนบรรทัด
split -l num_lines input_file output_prefix
การแบ่งตามไบต์
split -b bytes input_file output_prefix
การแบ่งเป็นจำนวนไฟล์เฉพาะ
split -n num_files input_file output_prefix
12. tac
Tac ซึ่งเป็น cat เรียงกลับ ทำตรงนั้น: แสดงไฟล์ด้วยบรรทัดในลำดับย้อนกลับ
13. tr
เครื่องมือ tr ใช้แปลหรือลบชุดอักขระ
ชุดอักขระปกติเป็นสตริงหรือช่วงอักขระ ตัวอย่าง:
- "A-Z": ตัวอักษรใหญ่ทั้งหมด
- "a-z0-9": ตัวอักษรเล็กและตัวเลข
- "\n[:punct:]": newline และอักขระวรรคตอน
อ้างอิง man page ของ tr สำหรับรายละเอียดเพิ่มเติม
เพื่อแปลงชุดหนึ่งไปอีกชุด ใช้ไวยากรณ์ต่อไปนี้:
tr SET1 SET2
ตัวอย่างเช่น เพื่อแทนที่ตัวอักษรเล็กด้วยคู่ใหญ่ คุณสามารถใช้:
tr "a-z" "A-Z"
เพื่อลบชุดอักขระ ใช้ธง -d
tr -d SET
เพื่อลบคอมพลีเมนต์ของชุดอักขระ (เช่น ทุกอย่างยกเว้นชุด) ใช้ -dc
tr -dc SET
สรุป
มีอะไรมากมายที่ต้องเรียนรู้เมื่อพูดถึงบรรทัดคำสั่ง Linux หวังว่าคำสั่งข้างต้นจะช่วยให้คุณจัดการข้อความบนบรรทัดคำสั่งได้ดีขึ้น