3番目の列が10進数のセミコロンで区切られたデータがあります。
A;B;1234.56
C;D;789.23
数値形式を2つ変更する必要があります。
- 小数点の後の数字の削除
- 数字に「千単位の区切り記号」を追加
だから1234.56
それはなります1'234
最初の部分を完了できましたが、千単位の区切り文字を追加する方法がわかりません。
printf "A;B;1234.56\nC;D;789.23\n" | awk -F';' '{gsub(/\.../,"",$3) ; printf "%s,%s,%s\n", $1, $2, $3 }'
どうすればいいですか?
答え1
LC_NUMERIC='en_US.UTF-8'
ロケール(数字の千単位の区切り形式でコンマをサポートしています)を使用し、sprintf
's %\047d
(一重引用符で作成された%\047d
別のタイプ)を使用します。%'d
8進エスケープシーケンスまたは%'\''d
作成することもできます)浮動小数点を整数に強制変換して使用する型修飾子斑点千単位の区切り文字として使用すると、このgsub()
関数を使用してコンマを一重引用符に変換します。
$ LC_NUMERIC='en_US.UTF-8' awk 'BEGIN{ FS=OFS=";" }
{ $3=sprintf ("%\047d", $3); gsub(",", "\047", $3) }1' infile
A;B;1'234
C;D;789