両方のファイルからデータを抽出したいと思います。
ファイル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