Đọc file trong shell linux

Bash exit codes & command chaining | #1 Practical Bash

Bash exit codes & command chaining | #1 Practical Bash

Mục lục:

  • Đọc một dòng tệp theo cú pháp
  • Đọc một dòng tệp theo ví dụ dòng
  • Phương pháp đọc tệp thay thế
  • Sử dụng thay thế quy trình
  • Sử dụng chuỗi ở đây
  • Sử dụng mô tả tệp
  • Phần kết luận

Khi viết các tập lệnh Bash, đôi khi bạn sẽ thấy mình trong các tình huống cần đọc từng dòng tệp. Ví dụ: bạn có thể có một tệp văn bản chứa dữ liệu cần được xử lý bởi tập lệnh.

Trong hướng dẫn này, chúng tôi sẽ thảo luận về cách đọc một dòng tệp theo dòng trong Bash.

Đọc một dòng tệp theo cú pháp

Cú pháp chung nhất để đọc từng dòng tệp như sau:

while IFS= read -r line do echo "$line" done < input_file

hoặc phiên bản một dòng tương đương:

while IFS= read -r line; do echo $line; done < input_file

Làm thế nào nó hoạt động?

Tệp đầu vào [ input_file ] là tên của tệp bạn muốn mở để đọc bằng lệnh read . Lệnh đọc đọc từng dòng tệp, gán từng dòng cho biến line . Khi tất cả các dòng được xử lý, vòng lặp while sẽ chấm dứt. Dấu tách trường bên trong [ IFS ] được đặt thành chuỗi null để duy trì khoảng trắng ở đầu và cuối là hành vi mặc định của lệnh read .

Đọc một dòng tệp theo ví dụ dòng

Hãy xem ví dụ sau đây. Giả sử, chúng tôi có một tệp có tên distros.txt chứa danh sách một số bản phân phối Linux phổ biến nhất và trình quản lý gói của chúng được phân tách bằng dấu phẩy [ , ]:

distros.txt

Ubuntu, apt Debian, apt CentOS, yum Arch Linux, pacman Fedora, dnf

Để đọc từng dòng tệp, bạn sẽ chạy đoạn mã sau trong thiết bị đầu cuối của mình:

while IFS= read -r line do echo "$line" done < distros.txt

Mã sẽ đọc tệp theo dòng, gán từng dòng cho một biến và lặp lại biến. Về cơ bản, bạn sẽ thấy đầu ra giống như thể bạn sẽ hiển thị nội dung tệp bằng lệnh cat.

Nếu bạn chỉ muốn in các bản phân phối sử dụng apt thì sao? Một cách sẽ là sử dụng câu lệnh if và kiểm tra xem dòng có chứa chuỗi con apt không:

while IFS= read -r line do if]; then echo "$line" fi done < distros.txt

Ubuntu, apt Debian, apt

Khi đọc từng dòng tệp, bạn cũng có thể chuyển nhiều hơn một biến cho lệnh đọc sẽ phân chia dòng thành các trường dựa trên IFS . Trường đầu tiên được gán cho biến thứ nhất, biến thứ hai cho biến thứ hai, v.v. Nếu có nhiều trường hơn biến, các trường còn lại được gán cho biến cuối cùng.

Trong ví dụ sau, chúng tôi đang đặt IFS thành dấu phẩy [ , ] và chuyển hai biến distro pm cho lệnh đọc. Mọi thứ từ đầu dòng cho đến dấu phẩy đầu tiên sẽ được gán cho biến đầu tiên [ distro ] và phần còn lại của dòng sẽ được gán cho biến thứ hai [ pm ]:

while IFS=, read -r distro pm do echo "$pm" is the package manager for "$distro" done < distros.txt

apt is the package manager for Ubuntu apt is the package manager for Debian yum is the package manager for CentOS pacman is the package manager for Arch Linux dnf is the package manager for Fedora

Phương pháp đọc tệp thay thế

Sử dụng thay thế quy trình

Quá trình thay thế cho phép bạn chuyển đầu ra từ lệnh dưới dạng tên tệp:

while IFS= read -r line do echo "$line" done <

Bài Viết Liên Quan

Chủ Đề