内容が次のようなファイルがあります。
A,10,20,30,40,50
B,20,40,10,30,60
C,30,50,20,40,10
D,40,50,20,10,30
上記のCSVファイルの特定の列(たとえば列3)に対して算術演算(たとえば10による除算)を実行したいと思います。そのため、次のようになります。
A,10,2,30,40,50
B,20,4,10,30,60
C,30,5,20,40,10
D,40,5,20,10,30
これはどのように行うことができますか?
これを試して:
% awk -F , -v OFS=, '$3/=10' <file
A,10,2,30,40,50
B,20,4,10,30,60
C,30,5,20,40,10
D,40,5,20,10,30
本当に bashで実行したい場合は、次のことができます。
$ while IFS="," read a b c rest; do
printf "%s,%s,%s,%s\n" $a $b $((c/10)) $rest;
done < file.csv
A,10,2,30,40,50
B,20,4,10,30,60
C,30,5,20,40,10
D,40,5,20,10,30
これは単純な整数算術では機能しますが、bashは浮動小数点数を処理できないため、非整数を生成する算術演算を試行すると失敗します。恐ろしく。 Bashは、ここでの作業に最適なツールではありません。