Chỉ với awk
lệnh:
awk -F, '{getline f1 <"file2" ;print f1,$3,$4}' OFS=, file1
Lấy một dòng từ tệp1 và lưu nó vào biến cục bộ f1
, sau đó in dòng được lưu trữ f1
và cuối cùng in các trường thứ ba ( $3
) và tiếp theo ( $3
) từ tệp 1 được phân tách bằng dấu phẩy ,
và thay đổi OFS (dấu tách trường đầu ra [dấu cách mặc định]) thành dấu phẩy ( ,
).
Lệnh ngắn sẽ như thế này:
paste -d, file2 <(cut -d, -f3- file1)
A B C D
A B C D
A B C D
A B C D
dán tệp2, sau đó cắt và dán cột thứ ba sang cột tiếp theo ( -f3-
) từ tệp1.
Với awk
và paste
(tùy chọn A)
Lệnh bên dưới cũng sao chép hai cột cuối cùng ( C,D
) từ tệp1 ở cuối mỗi dòng trong tệp2:
paste -d',' file2 <(awk -F',' '{print $(NF-1)","$NF}' file1)
Lệnh trên dán nội dung file2 sau đó in dấu phân cách dấu phẩy ( -d','
) sau đó dán hai trường cuối cùng ( NF
là chỉ mục của trường cuối cùng và $NF
là chuỗi có chỉ mục của nó NF
. Vì vậy, $(NF-1)
trường thứ hai trước trường cuối cùng) từ tệp1 khi các chỉ mục đó xác định lại hoặc chia nhỏ với khán giả dấu phẩy ( -F','
).
Với awk
và paste
(tùy chọn B)
Lệnh này cũng giống như trên ( $3
và $4
trỏ đến trường thứ ba và thứ ba của mỗi dòng từ tệp1):
paste -d',' file2 <(awk -F',' '{print $3","$4}' file1)
Hoặc một giải pháp khác với cut
lệnh:
paste -d, <(cut -d, -f1 file1) <(cut -d, -f2 file2) <(cut -d, -f3- file1)
Lệnh cắt trong lệnh trên trước tiên cắt trường đầu tiên ( -f1
được lập chỉ mục bằng dấu phẩy dấu phẩy ( -d.
)) từ tệp1 ( cut -d, -f1 file1
), sau đó cắt và dán trường thứ hai của tệp2 ( cut -d, -f2 file2
) và cuối cùng cắt và dán cột thứ ba ( -f3
) vào nexts ( -
) từ file1 ( cut -d, -f3- file1
) một lần nữa.
Lệnh này cũng trả về kết quả tương tự:
paste -d, <(awk -F',' '{print $1}' file1) <(awk -F',' '{print $2}' file2) <(awk -F',' '{print $3","$4}' file1)
dán trường thứ hai từ tệp1 ( awk -F',' '{print $1}' file1
) sau đó in dấu phẩy ( -d,
), sau đó dán cột thứ hai từ tệp2 ( awk -F',' '{print $2}' file2
), cuối cùng dán lại cột thứ hai và cột cuối cùng của tệp1 ( awk -F',' '{print $3","$4}' file1
).