次の 2 つのファイルがあります。
file1:
1 235 283 567 1001 1002 1009
1 1 2 1 2 0 1
0 0 0 0 0 2 2
1 2 2 2 2 2 2
そして
file2:
1 567 1002 1009
これらのファイルを垂直にリンクしたいです。つまり、出力には、file1
最初の行の値が次の列のみを含む必要がありますfile2
。
出力:
1 567 1002 1009
1 1 0 1
0 0 2 2
1 2 2 2
どんな提案がありますか?
ベストアンサー1
そしてawk
:
awk '
NR==FNR{for(i=1;i<=NF;i++){values[$i]};next}
FNR==1{for(i=1;i<=NF;i++){if ($i in values){nf[i]}}}
{sp=""; for(i=1;i<=NF;i++){if (i in nf){printf("%s%s",sp,$i);sp=" "}}}{print ""}
' file2 file1
まず読み込み、file2
各値を配列に保存してvalues
処理しますfile1
。最初の行で、どのフィールドが公開されているかを確認し、そのフィールド番号を別の配列に保存して参照としてnf
使用します。オプションで、対応する列を印刷します。