đây là cách tôi sẽ làm điều đó.
Trước tiên, tôi đặt biến môi trường IFS để cho biết read
rằng "," là dấu tách trường.
export IFS=","
Với tập tin "đầu vào" chứa dữ liệu mà bạn cung cấp, tôi có thể sử dụng đoạn mã sau:
cat test | while read a b c d; do echo "$a:$b:$c:$d"; done
Để nhanh chóng tóm tắt lại những gì đang xảy ra ở trên. cat test |
đọc tệp và gửi đến while
. while
chạy mã giữa do
và done
trong khi read
trả về giá trị đúng. read
đọc một dòng từ đầu vào tiêu chuẩn và phân tách nó thành các biến ("a", "b", "c" và "d") theo giá trị của $ IFS. Cuối cùng, echo
chỉ hiển thị các biến mà chúng tôi đã đọc.
nào mang lại cho tôi kết quả như sau
X1:X2:X3:X4
Y1:Y2:Y3:Y4
BTW, BASH manual luôn là đọc tốt. Bạn sẽ học một cái gì đó mới mỗi khi bạn đọc nó.
Nguồn
2010-12-14 13:29:22
Tin vui: hai chương trình, [awk] (http://www.vectorsite.net/tsawk.html) và [sed] (http://www.grymoire.com/Unix/Sed.html), tồn tại để làm chính xác điều đó. Tin xấu: họ không thể học được. Tôi không đặt câu trả lời này vì nó thực sự không phải; hy vọng một người nào đó bên dưới sẽ đăng cú pháp awk/sed chính xác để bạn sử dụng trong vấn đề cụ thể của mình. – eykanal
'sed' có thể khó học, nhưng 'awk' thì không. Awk thực sự khá dễ dàng. Mặc dù bạn không cần phải thực hiện điều này, vì nó có thể được thực hiện với các trình xây dựng sẵn (xem phản hồi của Ignacio, bên dưới). –