スペースで区切られたファイルがあります。特定の列に対していくつかの数学演算を実行したいと思います。たとえば、列2に1e6を掛けたいとします。次のコマンドを使用できます。
awk 'BEGIN { FS=","; OFS=","; } {print $1,$2=$2*1e6,$3,$4}' result.txt
私の問題は、私のファイルに複数の列を含めることができることです。この場合、awk
私のコマンドは何でなければなりませんか?私のファイルに25個の列があり、15番目の列に100を掛けたいとしましょう。でこれを行うにはどうすればよいですかawk
?
ベストアンサー1
すべてのフィールドを印刷するのではなく、行全体を印刷できます$0
。
これは私たちができるのでうまくいきます変化フィールドにデータを割り当てることで
例えば
$2=$2*100
2番目のフィールドを更新し、残りのフィールドは変更せずに残します。
% echo '1 2 3 4' | awk '{$2=$2*100; print $0}'
1 200 3 4
print
たとえば、デフォルト値を使用して範囲を絞り込むことができます。$0
awk '{$2=$2*100; print}'
基本操作を使用することもできます。
awk '{$2=$2*100} 1'
しかし、通常、他の人がコードを読みやすく理解するのが簡単なので、より長いバージョンをお勧めします。コードの保守性は単純さと同じくらい重要です。
awk '{$2=$2*100; print $0}'