Đọ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.

Show

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 < <(cat input_file)

Sử dụng chuỗi ở đây

Ở đây String là một biến thể của tài liệu Here. Chuỗi (cat input_file) sẽ giữ các dòng mới:

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

Bạn cũng có thể cung cấp đầu vào cho vòng lặp bằng cách sử dụng một bộ mô tả tệp:

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

Khi làm việc với các bộ mô tả tệp, hãy sử dụng một số trong khoảng từ 4 đến 9 để tránh xung đột với các bộ mô tả tệp nội bộ.

Phần kết luận

Trong Bash, chúng ta có thể đọc từng dòng tệp bằng cách cung cấp tên tệp làm đầu vào cho một vòng lặp đọc.

thiết bị đầu cuối bash

Một công ty công nghệ hỗ trợ các nhà sản xuất mua bằng sáng chế trong nỗ lực để bảo vệ cộng đồng Linux khỏi vụ kiện tụng trí tuệ sẽ sớm khởi động một trang web để giúp các nhà sáng chế đưa ra những ấn phẩm phòng thủ - "Chúng ta có thể huy động được cộng đồng này, ít bằng sáng chế hơn sẽ được cấp", Keith Bergelt, người vừa trở thành Giám đốc điều hành của Mạng Phát minh Mở (Open Invention Network), cho biết. "Bất cứ điều gì xảy ra trong thế giới cải cách bằng sáng chế trong chính q

Đọc file trong shell linux

Phục vụ như là một đối thủ của chiến lược hiện tại của OIN, theo đó nó cung cấp các bằng sáng chế của nó miễn phí cho các công ty để đổi lấy một cam kết rằng họ sẽ không khẳng định bằng sáng chế của họ đối với hệ thống Linux. Các nhà tài trợ bao gồm NEC, IBM, Novell, Philips, Red Hat và Sony. Google, Oracle và Alfresco nằm trong số những người được cấp giấy phép.

Mặc dù đã nhiều lần cố gắng lấy thêm thông tin từ Asustek, công ty vẫn chưa khẳng định rằng vấn đề này chỉ giới hạn trong các máy tính cá nhân Eee Box của Nhật. Eee Box là sự mở rộng của Asustek vào không gian máy tính để bàn của dòng sản phẩm Eee nổi tiếng của nó máy vi tính. Eee PC ban đầu về cơ bản đã tung ra toàn bộ dòng máy tính xách tay giá rẻ hoặc mini-laptop khi nó được giới thiệu vào giữa năm 2007 tại triển lãm phần cứng Computex của Đài Loan. Trong năm ngoái, dải sản phẩm đã phát triển

Đọc file trong shell linux

Doanh số bán nhanh của máy móc đã không bị các công ty khác chú ý , và nhiều nhà cung cấp máy tính xách tay lớn đang cung cấp máy tính trong cùng không gian để cạnh tranh với Eee PC. Gần đây nhất, Toshiba của Nhật đã tung ra sản phẩm đầu tiên trong danh mục này, theo các nhà cung cấp khác bao gồm Hewlett-Packard, Fujitsu và Acer.

Con ngựa Trojan tiếp tục gian lận nhấp chuột, lừa đảo trong đó quảng cáo trên web được nhấp vào quá mức hoặc trong các trường hợp gây hiểu lầm theo thứ tự Joe Stewart, giám đốc phân tích phần mềm độc hại tại SecureWorks, đã viết Joe Anderson, giám đốc phân tích phần mềm độc hại tại SecureWorks, cho biết, phần mềm độc hại có tên là "FFSearcher" là một trong những phần mềm thông minh hơn. trên một blog của công ty.

Đọc file trong shell linux

[ĐọC thêm: Cách xóa phần mềm độc hại khỏi PC Windows của bạn]