Tôi hy vọng ai đó có thể giải thích cho tôi điều gì đang xảy ra trong tình huống này và cách giải quyết.
Tôi đang cố gắng một điều đơn giản: để đọc từng hàng từ một tệp văn bản có vòng lặp.
Đây là nội dung tệp văn bản mà tôi đang làm việc trên:
aa a a a a a a a
bb bbbbb bbbbb b
cccccccc c c c
LƯU Ý: Đây là một tệp đơn giản, chỉ để kiểm tra khái niệm. Tệp văn bản chính mà tôi đang làm việc có dung lượng khoảng 140 MB, với bố cục theo vị trí cho từng trường.
Đây là nội dung tập lệnh bash của tôi:
TỆP=./text.txt
awk '{ in }' $FILE | trong khi đọc ROW; làm
tiếng vang $ROW
xong
Tôi đang lấy từng hàng từ tệp, nhưng đây là kết quả:
aa a a a a a a a
bb bbbbb bbbbb b
cccccccc c c c
Như bạn có thể thấy, các khoảng trắng thừa đang bị xóa khỏi đầu ra.
Tôi đang cố kiểm tra tập lệnh này bằng cách sử dụng awk
, nhưng tôi đã thử với con mèo
và tiêu chuẩn
và có kết quả tương tự:
TỆP=./text.txt
# con mèo
con mèo $FILE | trong khi đọc ROW; làm
tiếng vang $ROW
xong
##########
# tiêu chuẩn
trong khi đọc ROW; làm
tiếng vang $ROW
xong < $FILE
Tôi cũng đã thử sử dụng cho vòng lặp
:
cho ROW trong $(awk '{ print }' $FILE); làm
tiếng vang $ROW
tiếng vang "---"
xong
Nhưng đây là kết quả, mỗi nội dung hàng được phân chia bởi khoảng trắng:
aaaa
---
aaaa
---
một
---
aa
---
bb
---
bbbbb
---
bbbbb
---
b
---
cccccccc
---
c
---
c
---
c
---
Như tôi đã đề cập trước đây, tệp văn bản chính có các trường vị trí, đó là lý do tại sao tôi cần tất cả các ký tự hàng, ngay cả khi chúng là khoảng trắng thừa.
Tôi tự hỏi liệu ai đó có thể giải thích cho tôi tại sao các khoảng trắng thừa lại bị xóa và cách in/làm việc với toàn bộ nội dung hàng (với bất kỳ khoảng trắng thừa nào) không?