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

2つのファイルを1つのテキストファイルにマージする方法は次のとおりです。

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

関連情報