Bash: trong khi đọc dòng

Bash While Read Line



Khi bạn đang làm việc trên các tập lệnh bash, đôi khi bạn có thể cần phải đọc từng dòng một của tệp. Hãy giải thích bằng một ví dụ. Bạn có một số dữ liệu trong tệp văn bản cần được thực thi hoặc xử lý bằng cách sử dụng tập lệnh. Vì vậy, việc chạy một tập lệnh bash để xử lý một tệp văn bản có nhiều khác biệt. Bạn cần tuân theo một cú pháp cụ thể để đọc từng dòng một tệp. Bài viết này sẽ giúp bạn đọc một dòng từ tệp bằng vòng lặp while trong Bash.

Cú pháp cơ bản của dòng trong khi đọc

Cú pháp sau được sử dụng cho bash shell để đọc tệp bằng vòng lặp while:







trong khi đọc -NShàng;
làm
quăng đi '$ dòng';
xong <input.file

Tùy chọn ‘-r’ trong cú pháp được đề cập ở trên được chuyển để đọc lệnh để tránh dấu gạch chéo ngược thoát khỏi việc được diễn giải. Tùy chọn ‘input_file’ đã đại diện cho tên tệp của bạn mà bạn muốn truy cập bằng cách sử dụng lệnh ‘read’.



Dấu phân tách trường nội bộ viết tắt là IFS có thể được sử dụng trước khi lệnh đọc được đặt thành chuỗi rỗng để ngăn chặn việc cắt bỏ khoảng trắng đầu hoặc cuối.



trong khi IFS=đọc -NShàng;
làm
quăng đi $ dòng;
xong <input.file

Mở thiết bị đầu cuối bằng phím tắt Ctrl + Alt + t, sau đó chạy các lệnh sau trên đó.





Ví dụ # 1: Đọc tệp từng dòng

Hãy lấy một ví dụ trong đó giả sử chúng ta có một tệp có tên OS.txt chứa tên của tất cả các bản phân phối Linux quan trọng. Nếu bạn muốn đọc một tệp mà không sử dụng lệnh ‘cat’ thì vì mục đích này, bạn có thể thực hiện lệnh sau để thực hiện tác vụ cụ thể. Chúng tôi sẽ sử dụng vòng lặp while sẽ đọc từng dòng từ tệp OS.txt và lưu trữ nội dung trong từng bước trong một dòng $ biến mà bạn có thể hiển thị sau này.

Dán các tên sau của các bản phân phối Linux vào OS.txt



CentOS
Ubuntu
Debian
LinuxMint $trong khi đọchàng;
làm
quăng đi $ dòng;
xong <OS.txt


Từ lệnh trên, bạn sẽ nhận được phản hồi sau trên cửa sổ đầu cuối:

Ví dụ # 2: Đọc tệp bằng tập lệnh bash

Tạo tệp bash và sau đó thêm mã được đề cập bên dưới vào tệp này để đọc nội dung tệp. Bạn có thể lưu tệp văn bản trước đó vào một biến mới $ filename và biến $ n được sử dụng để giữ giá trị của mỗi dòng. Bây giờ, sử dụng vòng lặp while, chúng ta sẽ đọc từng dòng từ một tệp với một số dòng cụ thể.

#! / bin / bash
tên tập tin='OS.txt'
n=1
trong khi đọchàng;
làm
# để đọc từng dòng
quăng đi 'Đường phân phối hệ điều hành không.$ n:$ dòng'
n= $((n +1))
xong < $ filename

Lưu tệp với tên OSinfo.sh và nhập lệnh sau trên thiết bị đầu cuối để chạy tập lệnh bash ở trên.

$bấu víuOSinfo.sh

Bây giờ, chạy lệnh cat để xem nội dung tệp gốc.

$con mèoOS.txt

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

Sử dụng tên tệp chuyển từ một lệnh

Trong tệp bash, bạn cần thêm đoạn mã sau. Trong tập lệnh này, chúng ta phải lấy tên tệp làm đối số. Đầu tiên, giá trị của một đối số được đọc bởi một biến $ 1 có tên tệp để đọc. Nó sẽ kiểm tra tên tệp có tồn tại ở vị trí được chỉ định hay không, sau đó sử dụng vòng lặp while nó sẽ đọc từng dòng một tệp tương tự như ví dụ trước.

#! / bin / bash
tên tập tin=$ 1
trong khi đọchàng;làm
# đọc từng dòng
quăng đi $ dòng
xong < $ tệp.txt

Lưu tập lệnh trên với tên ‘Readline.sh’ và thực hiện lệnh sau trên thiết bị đầu cuối để chạy tập lệnh nêu trên:

Trong đầu ra ở trên, bạn sẽ thấy rằng tệp ‘OSinfo.txt’ đang được truyền dưới dạng đối số và nội dung của ‘OSinfo.txt’ sẽ được hiển thị sau khi loại bỏ các khoảng trắng thừa. Bạn có thể hiển thị nội dung tệp gốc bằng cách chạy ‘cat OSinfo.txt’.

Phần kết luận

Trong bài viết này, chúng ta đã thảo luận về cách đọc các dòng bằng vòng lặp while trong lập trình bash. Chúng tôi đã triển khai các phương pháp khác nhau bằng cách sử dụng tập lệnh bash hoặc bạn có thể chỉ cần sử dụng tệp văn bản để thực hiện tác vụ đọc từng dòng tệp. Nếu bạn muốn tìm hiểu thêm các ví dụ thì bằng cách sử dụng cú pháp nêu trên, bạn cũng có thể thực thi trên hệ thống của mình. Tôi hy vọng bạn thích hướng dẫn này và sẽ là duy nhất cho bạn. Hãy cho biết trong trường hợp có bất kỳ lỗi nào.