두 개의 탭으로 구분된 파일이 있습니다.
파일 1.txt:
1 KD
2 LBJ
3 YAO
4 LBJ
5 YAO
6 MJ
7 MJ
8 YAO
9 KD
파일 2.txt:
KD 35
LBJ 6
YAO 11
MJ 23
예상 출력:
1 KD 35
2 LBJ 6
3 YAO 11
4 LBJ 6
5 YAO 11
6 MJ 23
7 MJ 23
8 YAO 11
9 KD 35
awk에 대한 도움을 주시면 감사하겠습니다.
답변1
awk를 사용하여 이 작업을 수행할 수 있습니다.
awk -F'\t' -v OFS='\t' 'NR==FNR{a[$1]=$2;next}{print $0, a[$2]}' file2 file1
1 KD 35
2 LBJ 6
3 YAO 11
4 LBJ 6
5 YAO 11
6 MJ 23
7 MJ 23
8 YAO 11
9 KD 35
join
또 다른 옵션은 다음 명령을 사용하는 것입니다 .
join -1 2 -2 1 -o 1.1 1.2 2.2 -t $'\t' <(sort -k2,2 file1) <(sort file2) | sort -n
설명하다:
-1 2 -2 1
join
첫 번째 파일의 두 번째 필드를 두 번째 파일의 첫 번째 필드와 연결하도록 명령에 지시합니다.-o 1.1 1.2 2.2
이는 출력의 필드 순서를 지정합니다. 점 앞의 숫자는 파일 번호이고, 점 뒤의 숫자는 파일의 필드 번호입니다.-t $'\t'
구분 기호를 탭으로 지정<(sort -k2,2 file1) <(sort file2)
결합하려는 필드별로 파일을 정렬합니다. 이join
명령을 사용하려면 파일을 정렬해야 합니다.| sort -n
출력 파일 정렬