두 개의 파일이 있습니다.
파일 1.txt:
111|aaa|444
222|bbb|555
333|ccc|666
파일 2.txt:
111
(null)
333
file1의 두 번째 열을 file2의 첫 번째 열로 바꿉니다.
예상 출력
새로운:
111|111|444
222||555
333|333|666
다음 명령을 사용하고 있습니다.
awk 'BEGIN {FS=OFS="|"}NR == FNR {a[FNR] = $B;next}$A = a[FNR]' B=1 A=2 file2.txt file1.txt > new.txt
내가 얻는 결과는
새로운:
111|111|444
333|333|666
두 번째 기록을 잃었습니다. 기록 손실을 방지하는 방법은 무엇입니까?
답변1
awk 'BEGIN {FS=OFS="|"}NR == FNR {a[FNR] = $B;next}{$A = a[FNR];print $0}' B=1 A=2 f2 f1
답변2
paste
또는 다음을 위해 and를 사용할 수 있습니다 cut
.
paste -d'|' <(cut -d'|' -f1 file1) <(cat file2) <(cut -d'|' -f3 file2)
하지만 속도 측면에서 어느 것이 더 낫다고 말할 수는 없습니다.