![file1의 다른 열 값과 일치하는 참조 파일 file2의 문자열을 출력하는 file1에 새 열을 추가합니다.](https://linux55.com/image/132603/file1%EC%9D%98%20%EB%8B%A4%EB%A5%B8%20%EC%97%B4%20%EA%B0%92%EA%B3%BC%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EC%B0%B8%EC%A1%B0%20%ED%8C%8C%EC%9D%BC%20file2%EC%9D%98%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EC%B6%9C%EB%A0%A5%ED%95%98%EB%8A%94%20file1%EC%97%90%20%EC%83%88%20%EC%97%B4%EC%9D%84%20%EC%B6%94%EA%B0%80%ED%95%A9%EB%8B%88%EB%8B%A4..png)
file1.txt(탭으로 구분, 두 번째 열에는 공백이 포함된 문자열 포함):
A Golden fog
B Vibrant rainbow and sunny
C Jumping, bold, and bright
D Chilly/cold/brisk air
file2.txt(탭으로 구분):
D01 Ti600 A
D02 Ti500 B
D16 Ti700 C
D20 Ti800 B
file3.txt에 대한 원하는 출력(탭 구분 기호 포함):
D01 Ti600 A Golden fog
D02 Ti500 B Vibrant rainbow and sunny
D16 Ti700 C Jumping, bold, and bright
D20 Ti800 B Vibrant rainbow and sunny
또는 최소한 file3.txt의 경우:
D01 Ti600 Golden fog
D02 Ti500 Vibrant rainbow and sunny
D16 Ti700 Jumping, bold, and bright
D20 Ti800 Vibrant rainbow and sunny
나는 열심히 노력했다
awk 'NR==FNR{a[$1]=$2;next}{$3=a[$1];}1' file1.txt file2.txt > file3.txt
그러나 나는 단지 다음을 얻습니다:
D01 Ti600
D02 Ti500
D16 Ti700
D20 Ti800
탭 대신 공백 구분자가 있고, 2열 뒤에 공백이 있는데 3열에는 값이 없습니다.
원하는 결과를 얻는 데 도움을 주시면 대단히 감사하겠습니다.
답변1
파일이 탭으로 구분되어 있지만 실제로는 사용하지 않습니다. 공개 키 A
등도 B
다음 위치에 있습니다.제삼현장에서 file2.txt
. 그래서:
$ awk 'BEGIN{OFS=FS="\t"} NR==FNR{a[$1]=$2;next}{$4=a[$3];}1' file1.txt file2.txt
D01 Ti600 A Golden fog
D02 Ti500 B Vibrant rainbow and sunny
D16 Ti700 C Jumping, bold, and bright
D20 Ti800 B Vibrant rainbow and sunny
또는 (약간 짧음)
$ awk -F'\t' 'NR==FNR{a[$1]=$2;next}{print $0"\t"a[$3]}' file1.txt file2.txt
D01 Ti600 A Golden fog
D02 Ti500 B Vibrant rainbow and sunny
D16 Ti700 C Jumping, bold, and bright
D20 Ti800 B Vibrant rainbow and sunny