列名でTSVファイルを投影しようとしています。これまでのところ、私はSOに質問からインスピレーションを取った、と私は、t.awk
をこのスクリプトを使用しています:AWVで名前でTSVファイル列をプロジェクト
BEGIN {
OFS="\t"
split(cols,out,",")
}
NR==1 {
for (i=1; i<=NF; i++)
ix[$i] = i
}
NR>1 {
for (i=1;i<=length(out);i++)
printf "%s%s", $ix[out[i]], OFS
print ""
}
私のように呼び出すことができる:それはのとき1を除いて、完璧に動作
awk -f t.awk -v cols=name1,name2,nameN input.tsv
cols
属性で指定された名前が存在しません。
このケースでも動作させるには、どうすれば変更できますか?私はパラメータとして渡された存在しないカラム名を無視するだけです。
例(編集): input.tsvを考えてみましょう:
a b c
1 2 3
2 3 4
5 6 7
私はコマンドを希望:
awk -f t.awk -v cols=a,c,batman input.tsv
生成する:これまでの
a c
1 3
2 4
5 7
けど、それは与える:
ここでは
サンプルデータを提供して、効果がないことをお知らせください。 – Inian
あなたはどのawkバージョンを使用していますか? 'GNU Awk 4.1.3'は、サンプル呼び出しのためにいくつかのランダムな出力を生成します。 – Inian
現在、私はMacOS上にあり、awkバージョン20070501 – Aslan986