Bash:
การอ่านไฟล์ข้อความ
วิธีการ:
นี่คือวิธีที่ง่ายที่สุดในการอ่านไฟล์ทีละบรรทัด:
while IFS= read -r line; do
echo "ข้อความ: $line"
done < "yourfile.txt"
ต้องการเนื้อหาทั้งไฟล์พร้อมกันหรือ? ลองใช้วิธีนี้:
file_content=$(<yourfile.txt)
echo "$file_content"
หรือคุณต้องใช้บรรทัดที่เฉพาะเจาะจง, เช่น บรรทัดที่ 4?
sed '4q;d' yourfile.txt
ตัวอย่างผลลัพธ์ของการอ่านบรรทัดที่ 4:
นี่คือเนื้อหาของบรรทัดที่สี่
ลงลึก
ย้อนกลับไปในวันนั้น, เราไม่มี IDE ที่ซับซ้อน, เรามีเทอร์มินัลและเอดิเตอร์ข้อความง่ายๆ UNIX ถูกออกแบบมาด้วยปรัชญาของการทำหนึ่งอย่างให้ดีที่สุด cat
, less
, sed
, และ awk
เป็นเหล่าทหารผ่านศึกในการจัดการข้อความ
การอ่านไฟล์ใน Bash ใช้ประโยชน์จากเครื่องมือเหล่านี้, รวมถึงการเปลี่ยนทิศทางและลูปของ Bash เอง ตัวอย่างเช่น, การใช้ while
กับ read
เหมาะสำหรับประสิทธิภาพหน่วยความจำกับไฟล์ขนาดใหญ่ คุณกำลังอ่านทีละบรรทัด, ไม่ได้ดั๊มพ์ทุกอย่างเข้าหน่วยความจำ
sed
เป็นตัวแก้ไขสตรีม การเลือกบรรทัดที่เฉพาะเจาะจงด้วย sed '4q;d' yourfile.txt
บอกให้ sed
หยุดหลังจากบรรทัดที่ 4 (4q
) จากนั้นจึงพิมพ์ (;d
) บรรทัดนั้น
มีทางเลือกอื่นๆ อยู่ awk
เหมาะสมมากสำหรับการประมวลผลข้อความ สคริปต์ Perl และ Python สามารถเรียกใช้ภายใน Bash เมื่อการประมวลผลข้อความซับซ้อนขึ้น แต่ละเครื่องมือและภาษาเหล่านี้มีกรณีการใช้งานและการพิจารณาประสิทธิภาพเฉพาะตัว
ดูเพิ่มเติม
- คู่มือ Bash Scripting: https://www.gnu.org/software/bash/manual/
sed
และawk
101 Hacks: https://www.thegeekstuff.com/2009/12/unix-sed-tutorial-6-examples-to-edit-file-in-place/- การประมวลผลข้อความบน Command Line ของ Linux ด้วย
grep
,awk
,sed
,sort
, และเพื่อนๆ: https://github.com/learnbyexample/Command-line-text-processing