awk를 사용하여 한 파일의 열을 다른 파일의 열로 바꾸시겠습니까?

awk를 사용하여 한 파일의 열을 다른 파일의 열로 바꾸시겠습니까?

두 개의 파일이 있습니다.

파일 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)

하지만 속도 측면에서 어느 것이 더 낫다고 말할 수는 없습니다.

관련 정보