วิธีอ่านไฟล์ทีละบรรทัดใน Bash script

How Read File Line Line Bash Script



คุณจะเขียนสคริปต์ทุบตีที่สามารถประมวลผลไฟล์ข้อความทีละบรรทัดได้อย่างไร ขั้นแรกคุณต้องมีรูปแบบและวิธีการอ่านไฟล์ทีละบรรทัด วิธีการสำหรับแนวทางนี้แสดงอยู่ในบทช่วยสอนนี้

สมมติว่าคุณมีไฟล์ชื่อ company.txt ซึ่งมีเนื้อหาชื่อบริษัท ไฟล์นี้มีเนื้อหาดังต่อไปนี้







Company.txt
ซัมซุง
โนเกีย
LG
ซิมโฟนี
iphone

ตัวอย่าง -1: การอ่านเนื้อหาไฟล์จากบรรทัดคำสั่ง

สมมติว่าคุณต้องการอ่านไฟล์ company.txt , ทีละบรรทัดจากบรรทัดคำสั่งโดยไม่ต้อง 'แมว' สั่งการ. เรียกใช้คำสั่งต่อไปนี้เพื่อทำงาน ในขณะที่ loop จะอ่านแต่ละบรรทัดจากไฟล์ company.txt ในแต่ละขั้นตอนและจัดเก็บเนื้อหาของบรรทัดใน $line ตัวแปรที่จะพิมพ์ในภายหลัง



$ในขณะที่ อ่านไลน์;ทำ โยนออก $line;เสร็จแล้ว <company.txt



ตัวอย่าง -2: การอ่านเนื้อหาไฟล์โดยใช้สคริปต์

สร้างไฟล์ทุบตีและเพิ่มรหัสต่อไปนี้เพื่ออ่านเนื้อหาของไฟล์เฉพาะ ที่นี่ ชื่อไฟล์ที่มีอยู่จะถูกเก็บไว้ใน $ชื่อไฟล์ ตัวแปรและ $n ตัวแปรใช้เพื่อเก็บค่าของหมายเลขบรรทัดของไฟล์นั้น เช่นเดียวกับตัวอย่างก่อนหน้านี้ ในขณะที่ ลูปใช้เพื่ออ่านไฟล์นี้ด้วยหมายเลขบรรทัด





#!/bin/bash
ชื่อไฟล์='company.txt'
NS=1
ในขณะที่ อ่านไลน์;ทำ
#อ่านแต่ละบรรทัด
โยนออก 'เบอร์ไลน์.$n:$line'
NS= $((n+1))
เสร็จแล้ว < $ชื่อไฟล์

รันคำสั่งต่อไปนี้เพื่อรันสคริปต์

$ทุบตีreadfile1.sh

วิ่ง 'แมว' สั่งกับ company.txt ไฟล์เพื่อแสดงเนื้อหาต้นฉบับของ company.txt ไฟล์.



$ cat company.txt

ตัวอย่าง -3: การส่งชื่อไฟล์จากบรรทัดคำสั่งและการอ่านไฟล์

สร้างไฟล์ bash และเพิ่มสคริปต์ต่อไปนี้ สคริปต์นี้จะใช้ชื่อไฟล์จากอาร์กิวเมนต์บรรทัดคำสั่ง ค่าอาร์กิวเมนต์แรกจะถูกอ่านโดยตัวแปร $1 ซึ่งจะมีชื่อไฟล์สำหรับอ่าน หากไฟล์นั้นอยู่ในตำแหน่งปัจจุบันแล้ว ในขณะที่ loop จะอ่านไฟล์ทีละบรรทัดเหมือนตัวอย่างก่อนหน้าและพิมพ์เนื้อหาไฟล์

#!/bin/bash
ชื่อไฟล์=$ 1
ในขณะที่ อ่านไลน์;ทำ
#อ่านแต่ละบรรทัด
โยนออก $line
เสร็จแล้ว < $ชื่อไฟล์

เรียกใช้สคริปต์ด้านบนด้วย พนักงาน.txt ไฟล์เป็นค่าอาร์กิวเมนต์ ผลลัพธ์จะแสดงเนื้อหาของ พนักงาน.txt ไฟล์โดยลบพื้นที่พิเศษ คุณสามารถแสดงเนื้อหาต้นฉบับของ พนักงาน.txt ไฟล์โดยใช้ 'แมว' สั่งการ.

$ bash readfile2.txt employee.txt
$ cat employee.txt

ตัวอย่าง – 4: การอ่านไฟล์โดยละเว้นเครื่องหมายแบ็กสแลช

หากคุณต้องการอ่านแต่ละบรรทัดของไฟล์โดยละเว้น backslash escape คุณต้องใช้ '-NS' ตัวเลือกพร้อมคำสั่งอ่านใน ในขณะที่ ห่วง

#!/bin/bash
ในขณะที่ อ่าน -NSไลน์;ทำ
#อ่านแต่ละบรรทัด
โยนออก $line
เสร็จแล้ว <company2.txt

สร้างไฟล์ชื่อ company2.txt ด้วยแบ็กสแลชและรันคำสั่งต่อไปนี้เพื่อรันสคริปต์ ผลลัพธ์จะแสดงเนื้อหาไฟล์โดยไม่มีแบ็กสแลช

$ทุบตีreadfile3.sh

คุณจะต้องอ่านไฟล์เพื่อวัตถุประสงค์ในการเขียนโปรแกรมหลายอย่าง ตัวอย่างเช่น คุณสามารถค้นหาหรือจับคู่เนื้อหาใดๆ ได้อย่างง่ายดายจากไฟล์ใดๆ โดยการอ่านแต่ละบรรทัดแยกกัน ดังนั้นจึงเป็นงานที่จำเป็นสำหรับการเขียนโปรแกรมใดๆ ตัวอย่างง่ายๆ ของการอ่านไฟล์ในสคริปต์ทุบตีจะแสดงในบทช่วยสอนนี้ สิ่งเหล่านี้จะช่วยให้คุณได้รับแนวคิดในการอ่านเนื้อหาไฟล์ทีละบรรทัดโดยใช้ while loop ใน bash script และนำไปใช้กับสคริปต์ของคุณได้อย่างมีประสิทธิภาพมากขึ้น ดูข้อมูลเพิ่มเติม วีดีโอ !