以下は、私たちが持っているテキストファイルです。
ファイル1.txt
A B C D
4 9
5 8
ファイル2.txt:
H I J K L M N O P Q R
1 2 3 5 8 9 5 3 3 2 4
4 7 8 9 5 6 8 9 0 8 7
7 8 0 7 4 7 7 9 0 6 7
2 7 9 5 7 9 0 7 6 5 4
file1.txtの列Aがfile2.txtの列Lと一致する場合、file2.txtから2つの列(HとN)を抽出して表示する出力テキストファイルは次のようになります。
出力.txt
A B C D
4 9 7 7
5 8 4 8
どうすればいいですか?
ベストアンサー1
grepを使用すると不可能ですが、awkを使用すると可能です。
$ awk 'NR==1 {print $0;next} # Print header
NR==FNR {a[$1]=$2;next} # collect data from file1.txt
{ if($5 in a) # If column L match
{ print($5,a[$5],$1,$7) } # print columns (H and N)
}
' file1.txt file2.txt
一行で:
$ awk 'NR==1{print $0;next} NR==FNR{a[$1]=$2;next} {if($5 in a){print($5,a[$5],$1,$7)}}' file1.txt file2.txt
A B C D
5 8 4 8
4 9 7 7
順序はフィールドに表示される順序と同じですfile2.txt
。
ソートが必要な場合は、ソート手順を追加してください。