Friday, October 25, 2024

[Bash] Lesson 27 – Đọc tệp tin trong Bash

-

Đọc file trong Bash

Có nhiều cách để đọc một file trong Bash Shell Scripting. Dưới đây là một số phương pháp quan trọng (giả sử tên file mà chúng ta đang đọc là ‘read_file.txt’):

Đọc file sử dụng ‘cat fileName’

Chúng ta có thể sử dụng cú pháp sau để in nội dung của file lên terminal.

value=`cat file_name`  

Ví dụ

#!/bin/bash  
  
value=`cat read_file.txt`  
echo "$value"  

Kết quả

Đọc file sử dụng ‘$(<fileName>)’

Sau đây là cú pháp để đọc nội dung của file bằng cách sử dụng ‘$’

value=$(file_name)  

Ví dụ

#!/bin/bash  
  
value=$(<read_file.txt)  
echo "$value"  

Kết quả

Đọc nội dung file từ Command-line Nếu chúng ta muốn đọc file từng dòng một từ Command-line mà không sử dụng lệnh ‘cat’, chúng ta có thể chạy lệnh sau để thực hiện công việc:

while read line; do Command; done < input.file  

Kết quả

Ở đây, vòng lặp while sẽ đọc từng dòng của file và lưu nội dung của dòng vào biến $line, sau đó sẽ được in ra sau đó.

Để đọc nội dung của file sử dụng script, chúng ta cần tạo một file bash và thêm mã sau:

#!/bin/bash  
  
file='read_file.txt'  
  
i=1  
while read line; do  
  
#Reading each line  
echo "Line No. $i : $line"  
i=$((i+1))  
done < $file  

Kết quả

Ở đây, một tên file hiện có được lưu trữ trong biến $file, và biến $i được sử dụng để giữ giá trị của số dòng của dòng đó.

Truyền tên file từ dòng lệnh và đọc file

Tạo một tập tin bash và thêm đoạn mã sau đây, sẽ truyền tên file từ dòng lệnh và đọc file từng dòng một. Giá trị đối số đầu tiên được đọc bởi biến $1, nó sẽ bao gồm tên file để đọc. Nếu file có sẵn ở vị trí được chỉ định thì vòng lặp while sẽ đọc file từng dòng một và in nội dung file.

#!/bin/bash  
  
file=$1  
while read line; do  
  
#Readind each line in sequence  
echo $line  
done <read_file.txt  

Kết quả

Ở đây, tên file được sử dụng làm giá trị đối số. Đầu ra sẽ cung cấp nội dung của ‘read_file.txt’ mà không có khoảng trắng thừa giữa các từ.

Đọc file bằng cách bỏ qua Backslash Escape
Nếu chúng ta muốn đọc từng dòng của một file bằng cách bỏ qua backslash-escape thì chúng ta cần sử dụng tùy chọn ‘-r’ với lệnh ‘read’ trong vòng lặp ‘while’, ví dụ:

#!/bin/bash  
  
while read -r line; do  
  
#Reading each line by omitting backslash escape  
echo $line  
done < read_file.txt  

Kết quả

Chúng ta có thể cần đọc file cho mục đích lập trình. Ví dụ, chúng ta có thể tìm kiếm hoặc so khớp bất kỳ nội dung cụ thể nào từ file từng dòng một. Do đó, điều này là một tác vụ hữu ích cho bất kỳ ngôn ngữ lập trình nào.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories