Tôi có một số tệp dữ liệu. Ví dụ
sales.txt (file gốc có 13 cột)
Ngày Đơn vị $$ nhân viên# abc def jkl mno pqr
Dec1 10 500 2 1 2 3 4 5
Dec2 12 450 3 6 7 8 9 10
Th12 13 550 3 11 12 13 14 15
4 tháng 12 15 600 3 16 17 18 19 20
...
...
supply.txt (bản gốc có 3 cột)
Ngày Chi phí đơn vị nguồn1 nguồn2
Th12 10 300 5 5
Th12 12 350 5 7
Th12 13 350 7 6
4 tháng 12 15 400 6 9
...
...
Và tôi có 3 tệp khác có 2 cột trong mỗi tệp. Những gì tôi đang cố gắng làm là khớp ngày trong tất cả các tệp này và sao chép các dòng trong một tệp. Mã tôi đang sử dụng cho việc này là:
# đếm số hàng trong tập tin
tệp = "sales.txt"
N=$(awk -F, '{rows++} END{print rows}' $file)
cho hàng trong $(eval echo {2..$N})
làm
mẫu=$(awk -v r=$row 'FNR==r {print $1}' $file);
dán <(awk -v line=$row 'FNR==line{print $0}' $file)
<(awk -v line=$row 'FNR==line{$1=""; print $0}' supply.txt)
<(awk -v line=$row 'FNR==line{print $2}' otherfile1.txt)
<(awk -v line=$row 'FNR==line{print $2}' otherfile2.txt)
<(awk -v line=$row 'FNR==line{print $2}' otherfile3.txt) >> account.txt
xong
Nó đang hoạt động trong việc sao chép và tìm các dòng nhưng định dạng trong tệp đầu ra là như thế này:
Dec1 10 500 2 1 2 3 4 5 10 300 5 5
1 # đến từ otherfile1
2 # đến từ otherfile2
3 # đến từ otherfile3
Dec2 12 450 3 6 7 8 9 10 12 350 5 7
4
5
6
...
...
Tôi muốn họ ở trên cùng một dòng. Tôi đã thử nhiều kỹ thuật được tìm thấy trong diễn đàn này nhưng không có kỹ thuật nào hiệu quả với tôi. Hãy giúp tôi