awkに変数を渡す

awkに変数を渡す

複数のファイルに分割する必要がある大容量ファイルがあります。

使ってsplitいるのに効果がいい

file=home/sap/dim/deltafile.D2017313.T100058932IDL.gz

gunzip -c ${file} | split -l 10000000 -d -a 4 - ${file%/*}/"working".$v_procid.`basename ${file%.*}`.part.

awkそれはまたそれと連携します。しかし、変数を渡すとawk失敗します。

gunzip -c ${file} | awk 'NR%10000000==1 {x="F" ++i} {print > x}'  

awkF1F2…というファイルを作成します。

変数を使用する必要がありましたが、さまざまな例をすべて試しました。不運。

ベストアンサー1

awkを使用してデータを渡すことができ-v var=value、-vオプションは任意の数だけ存在できます。

awk -v foo=FOO 'END {print foo}' </dev/null
awk -v foo=FOO -v bar=BAR 'END {print foo, bar}' </dev/null

通常どおり、割り当ての一部としてシェル変数などを使用することもできます。

awk -v bar="$PWD" 'END {print bar}' </dev/null

file=home/sap/dim/deltafile.D2017313.T100058932IDL.gz
awk -v bar="${file%/*}" 'END {print bar}' </dev/null

おすすめ記事