awk를 사용하여 텍스트 파일의 데이터를 TXT 파일로 출력하여 텍스트 파일의 데이터를 비교하여 CSV 파일의 데이터를 정렬하는 방법은 무엇입니까?

awk를 사용하여 텍스트 파일의 데이터를 TXT 파일로 출력하여 텍스트 파일의 데이터를 비교하여 CSV 파일의 데이터를 정렬하는 방법은 무엇입니까?

두 파일에서 데이터를 추출하고 싶습니다.

파일 1.txt:

Type Serial ID Element Hit_Possibility
Yasuo 19-2 19623 Hasaki 

파일 2.csv:

Date,Name,Order,Hit Possibility
12-Aug,Ken,1,256
12-Aug,Tom,19,498
12-Aug,Ray,36,753

두 파일을 하나의 텍스트 파일로 병합하는 방법은 다음과 같습니다.

Type Serial ID Element Hit_Possibility
Yasuo 19-2 19623 Hasaki 498

이전에 시도한 내용은 다음과 같습니다.

awk -F "\"*,\"*" 'NR==1{print $0;next} NR==FNR{Arr[$2]=$NF;next}{split($2,b,"-");if(b[1] in Arr){print $0,Arr[b[1]]}}' file2.csv file1.txt

NR==FNR 부분 때문에 결과를 얻을 수 없는 것 같아요. 원하는 결과 파일을 얻으려면 어떻게 해야 하나요?

답변1

다음과 같이 시도해 볼 수 있습니다.

awk -F, '
   (NR==FNR)&&(NR>1){a[$3]=$4;next}  # Get keys of file2 into array a
   ($2 in a){$0=$0 a[$2]}            # If key in file1 is part of the array a, append value
   NR!=1                             # Print all lines of file1 and file2 except the header
' file2 FS='[ -]' file1

답변2

Olive의 답변을 약간 단순화할 수 있습니다.

awk -F, '
NR==FNR     {a[$3] = $4
             next}
            {print $0, a[$2]
            }
' file2 FS='[ -]' file1
Type Serial ID Element Hit_Possibility 
Yasuo 19-2 19623 Hasaki  498

관련 정보