awkを使用してCSV列の値を変更し、変数を使用します。

awkを使用してCSV列の値を変更し、変数を使用します。

複数の数値列で構成されるCSVファイルがあります。 3番目の列をabs($3-1)3番目の列の数値の絶対値から1を引いたものに置き換えたいと思います。

次のコマンドを試してみました。

awk '{d=($3>1)?($3-1):(-$3+1); print $1 " " $2 " " $d}' file.csv

変数がd正しい値を保存することを願っています。しかし、私が得た結果は完全に間違っていました。私がここで何を間違っているのか?申し訳ありません。今始まったばかりですawk

ベストアンサー1

コードでは$d:thフィールドの値です。d変数の値がd記録されますd

追加の変数を使用せずにコードを簡素化できます。

$3 = $3 > 1 ? $3 - 1 : 1 - $3
print

または、

$3 -= 1; if ($3 < 0) $3 = -$3
print

...OFS正しい区切り記号の値を想定します。print引数なしで使用すると、現在のレコードが出力されます。

おすすめ記事