awk
次のコマンドと同じ機能を達成したいと思います。
awk -F ";" '{print $3 > "/" $1 "/" $2}' file
たとえば、
入力として2行のファイルがあります。
path1;filename_1;f3_1
path2;filename_2;f3_2
私が望む出力は次のとおりです。
- ファイルの
/path1/filename_1
内容は次のとおりです。f3_1
- ファイルの
/path2/filename_2
内容は次のとおりです。f3_2
awkを使用してこれを実行すると、141終了コードSIGPIPEが表示されます。このエラーをバイパスしたいです。
ベストアンサー1
awk
ファイルハンドルが不足しているようです。最新バージョンにアップグレードできない場合、awk
最も明確な回避策はそのファイルを使用してからそのファイルを閉じることです。
path;filename
複数回発生する可能性のある組み合わせはありますか?
そうでない場合は、以下を試してください。
awk -F ";" '{f="/"$1"/"$2; print $3 > f ; close(f)}' file
そうでなく>> f
既存のファイルに追加できる場合は、次を使用します。
awk -F ";" '{f="/"$1"/"$2; print $3 >> f ; close(f)}' file
ファイルを最初に作成するときにカットする必要がありますが、それ以降に追加する必要がある場合、状況は少し複雑です。
awk -F ";" '{ f="/"$1"/"$2;
if ( !fnames[f]++ ) { print > f };
print $3 >> f;
close(f)
}' file
連想fnames
配列は、スクリプトがファイル名を解決したかどうかを判断するために使用されます。そうでない場合は、ファイルを切り捨てます。