スペースで区切られたファイル内の与えられた列に数字を掛けるawkコード

スペースで区切られたファイル内の与えられた列に数字を掛けるawkコード

スペースで区切られたファイルがあります。特定の列に対していくつかの数学演算を実行したいと思います。たとえば、列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}'

おすすめ記事