awk를 사용하여 한 열을 다른 열의 정보로 채웁니다.

awk를 사용하여 한 열을 다른 열의 정보로 채웁니다.

두 개의 탭으로 구분된 파일이 있습니다.

파일 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 1join첫 번째 파일의 두 번째 필드를 두 번째 파일의 첫 번째 필드와 연결하도록 명령에 지시합니다.
  • -o 1.1 1.2 2.2이는 출력의 필드 순서를 지정합니다. 점 앞의 숫자는 파일 번호이고, 점 뒤의 숫자는 파일의 필드 번호입니다.
  • -t $'\t'구분 기호를 탭으로 지정
  • <(sort -k2,2 file1) <(sort file2)결합하려는 필드별로 파일을 정렬합니다. 이 join명령을 사용하려면 파일을 정렬해야 합니다.
  • | sort -n출력 파일 정렬

관련 정보