0

cutやbcなどのBashユーティリティを使用して、空白で区切られたデータの列の各数値に対して簡単な計算を実行したいと思います。データは次のようになります。

string 0.998663 string string string
string 0.998592 string string string
string 0.999096 string string string

2列目の数字を有効数字3桁に変更したいとします。これらの新しい数値の別の列を、2番目の列の直後にあるこのデータに追加したいと思います。したがって、結果は次のようになります。

string 0.998663 0.999 string string string
string 0.998592 0.999 string string string
string 0.999096 0.999 string string string

このすべてのデータを手動で循環させてから、データの新しい列を作成できることは知っていますが、これを行うにはもっと効率的な方法があると思います。これを行うための賢い方法を知っていますか?

4

2 に答える 2

4

この短い行を試してください:

awk '$2=$2" "sprintf("%.3f",$2)' file

サンプルデータを使用して:

kent$  echo "string 0.998663 string string string
string 0.998592 string string string
string 0.999096 string string string"|awk '$2=$2" "sprintf("%.3f",$2)'
string 0.998663 0.999 string string string
string 0.998592 0.999 string string string
string 0.999096 0.999 string string string
于 2013-02-25T11:49:51.453 に答える
1

あなたはで試すことができます:

awk '{printf("%s %s %.3f %s %s %s\n",$1,$2,$2,$3,$4,$5)}' file

テスト

$ awk '{printf("%s %s %.3f %s %s %s\n",$1,$2,$2,$3,$4,$5)}' file
string 0.998663 0.999 string string string
string 0.998592 0.999 string string string
string 0.999096 0.999 string string string
于 2013-02-25T11:42:39.473 に答える