私のファイルには次のデータのリストがあります。
-0.3476890000000000
0.0743938333333333
-1.0990240000000000
0.0743938333333333
-0.2169100000000000
0.0879397500000000
すべてのデータを次のようにソートしようとしています。
-0.347689000000000
0.0743938333333333
-1.099024000000000
0.0743938333333333
-0.216910000000000
0.0879397500000000
残念ながら私はこれを行うことはできませんawk '{printf "%18s\n", $1}'
。理想的な出力は次のとおりです。
-0.3476890000000000
0.0743938333333333
-1.0990240000000000
0.0743938333333333
-0.2169100000000000
0.0879397500000000
答え1
フィールドの幅が小さすぎる場合があります。努力する
awk '{printf "%19s\n", $1}' file
-0.3476890000000000
0.0743938333333333
-1.0990240000000000
0.0743938333333333
-0.2169100000000000
0.0879397500000000
答え2
GNU Awk(gawk
)と両方が正の前にスペースを追加して負の数と整列するmawk
C修飾子をサポートしているようです。printf
' '
' ' (a space) A blank should be left before a positive number (or empty string) produced by a signed conversion.
たとえば、
$ mawk '{printf "% 22.16f\n", $1}' file
-0.3476890000000000
0.0743938333333333
-1.0990240000000000
0.0743938333333333
-0.2169100000000000
0.0879397500000000
またはnumfmt
$ numfmt --format='% 22.16f' < file
-0.3476890000000000
0.0743938333333333
-1.0990240000000000
0.0743938333333333
-0.2169100000000000
0.0879397500000000
答え3
以下も使用できますprintf(1)
。
xargs <file printf '%19.16f\n'
-0.3476890000000000
0.0743938333333333
-1.0990240000000000
0.0743938333333333
-0.2169100000000000
0.0879397500000000
または入力ファイルが大きすぎない場合は、シェルを埋め込むprintf
:
undef IFS
printf '%19.16f\n' $(cat file)