Giả sử chúng ta có hai tệp này:ống rất nhiều tác phẩm để stdin, giải nén cột đầu tiên, sau đó kết hợp những người trong một tập tin mới
$ cat ABC.txt
ABC DEF
$ cat PQR.txt
PQR XTZ
Và chúng tôi muốn tạo ra một tập tin mới với cột 1 của mỗi tệp. Điều này có thể đạt được bằng cách:
$ paste -d ' ' <(cut -d ' ' -f 1 ABC.txt) <(cut -d ' ' -f 1 PQR.txt)
ABC PQR
Nhưng tôi muốn sử dụng điều này với hàng tấn tệp trong đầu vào, không chỉ ABC.txt và PQR.TXT mà còn rất nhiều tệp. Làm thế nào chúng ta có thể khái quát tình hình này để vượt qua mỗi tập tin trong bộ sưu tập để cắt và sau đó vượt qua tất cả các kết quả đầu ra để dán (Tôi biết rằng điều này có thể được thực hiện tốt hơn với awk nhưng tôi muốn biết làm thế nào để giải quyết này sử dụng cách tiếp cận này).
Sửa 1
tôi đã phát hiện ra một cách bẩn bẩn để làm điều này:
$ str=''; for i in *.txt; \
do str="${str} <(cut -d ' ' -f 1 ${i})"; \
done ; \
str="paste -d ' ' $str"; \
eval $str
Nhưng xin, giải phóng linh hồn của tôi với một câu trả lời mà không liên quan đến sắp Khoa học Máy tính Địa ngục.
Chỉnh sửa 2
Mỗi tệp có thể có n hàng, nếu điều này quan trọng.
bạn chỉ có một hàng cho mỗi tệp? – karakfa
Không, mỗi tệp có n hàng. – Dargor