別の列にカンマがある値の合計

別の列にカンマがある値の合計

私の入力ファイルは次のとおりです。

x;y;z
1;1,2;1
0;0,5;1
0;0,75;2
4;1,5;2
2;3,55;1

awkのもの:'{if($1>0){print $1";"$2-$3";"}'

私の予想結果:

1;0,2;
4;-0,5;
2;2,55;

しかし、私の出力ファイルにはカンマを含む数字は表示されません。

ベストアンサー1

あなたの地域が邪魔になっています。バラよりhttps://www.gnu.org/software/gawk/manual/html_node/Locale-influences-conversions.html

POSIXLY_CORRECTGNU awkの場合は、環境変数とLS_NUMERIC環境変数をコンマを小数点区切り文字として使用するロケールに設定する必要があります。

POSIXLY_CORRECT=1 LC_ALL=en_DK.utf-8 gawk -F';' '$1+0 > 0 {print $1 FS $2-$3 FS}' file
1;0,2;
4;-0,5;
2;2,55;

$1+0 > 0また、ヘッダーの印刷を避けるために使用します。また、使用することができますNR > 1 && $1 > 0


POSIXLY_CORRECT環境変数を使用gawk --posixまたは置き換えることもできます。gawk --use-lc-numeric

おすすめ記事