次の形式のファイルがあります
1 1 1 0.02484183 57.2400000 24.6000000
2 1 2 -0.16091000 56.5200000 24.5600000
3 1 1 0.02484183 55.5700000 24.4900000
4 1 1 0.02484183 56.4400000 25.5100000
5 1 2 0.08638400 56.8900000 23.3300000
6 1 1 0.01376475 57.8900000 23.5200000
7 1 1 0.01376475 57.0600000 22.5200000
8 1 2 0.17612200 55.8800000 22.9700000
9 1 1 0.02042900 56.1600000 22.0400000
10 1 2 -0.34768900 55.9300000 24.0700000
11 1 1 0.07439383 55.5100000 25.0200000
12 1 1 0.07439383 55.4600000 23.7100000
13 1 1 0.07439383 57.0000000 24.2400000
14 1 2 0.02151800 54.4400000 22.8700000
15 1 1 0.08793975 54.5000000 22.4000000
次の形式のファイルを生成したい
1 1 1 0.02484183 57.2400000 24.6000000
2 1 2 -0.16091000 56.5200000 24.5600000
3 1 1 0.02484183 55.5700000 24.4900000
4 1 1 0.02484183 56.4400000 25.5100000
5 1 2 0.08638400 56.8900000 23.3300000
6 1 1 0.01376475 57.8900000 23.5200000
7 1 1 0.01376475 57.0600000 22.5200000
8 1 2 0.17612200 55.8800000 22.9700000
9 1 1 0.02042900 56.1600000 22.0400000
10 1 2 -0.34768900 55.9300000 24.0700000
11 1 1 0.07439383 55.5100000 25.0200000
12 1 1 0.07439383 55.4600000 23.7100000
13 1 1 0.07439383 57.0000000 24.2400000
14 1 2 0.02151800 54.4400000 22.8700000
15 1 1 0.08793975 54.5000000 22.4000000
答え1
awk は printf+%f を使用します。
この試み。幅が変更されたprintfを使用します(たとえば、%2d
必要に応じてフィールドを埋める)。ここでも% 2.8f
浮動小数点数の書式が指定されます。
$ awk '{printf "%2d%7d%7d % 2.8f % 2.7f % 2.7f\n",$1,$2,$3,$4,$5,$6}' file
1 1 1 0.02484183 57.2400000 24.6000000
2 1 2 -0.16091000 56.5200000 24.5600000
3 1 1 0.02484183 55.5700000 24.4900000
4 1 1 0.02484183 56.4400000 25.5100000
5 1 2 0.08638400 56.8900000 23.3300000
6 1 1 0.01376475 57.8900000 23.5200000
7 1 1 0.01376475 57.0600000 22.5200000
8 1 2 0.17612200 55.8800000 22.9700000
9 1 1 0.02042900 56.1600000 22.0400000
10 1 2 -0.34768900 55.9300000 24.0700000
11 1 1 0.07439383 55.5100000 25.0200000
12 1 1 0.07439383 55.4600000 23.7100000
13 1 1 0.07439383 57.0000000 24.2400000
14 1 2 0.02151800 54.4400000 22.8700000
15 1 1 0.08793975 54.5000000 22.4000000
$
awkはprintf + tabsを使用します
コードをより明確にするためにタブ(\ t)メソッドを使用することもお勧めしますが、必要なソートを正確に達成することはできません。
$ awk '{print $1"\t"$2"\t"$3"\t"$4"\t"$5"\t"$6}' file
1 1 1 0.02484183 57.2400000 24.6000000
2 1 2 -0.16091000 56.5200000 24.5600000
3 1 1 0.02484183 55.5700000 24.4900000
4 1 1 0.02484183 56.4400000 25.5100000
5 1 2 0.08638400 56.8900000 23.3300000
6 1 1 0.01376475 57.8900000 23.5200000
7 1 1 0.01376475 57.0600000 22.5200000
8 1 2 0.17612200 55.8800000 22.9700000
9 1 1 0.02042900 56.1600000 22.0400000
10 1 2 -0.34768900 55.9300000 24.0700000
コードバージョンなし、列
繰り返しますが、要求された出力と正確に一致しませんがcolumn
。
$ column -t file
1 1 1 0.02484183 57.2400000 24.6000000
2 1 2 -0.16091000 56.5200000 24.5600000
3 1 1 0.02484183 55.5700000 24.4900000
4 1 1 0.02484183 56.4400000 25.5100000
5 1 2 0.08638400 56.8900000 23.3300000
6 1 1 0.01376475 57.8900000 23.5200000
7 1 1 0.01376475 57.0600000 22.5200000
8 1 2 0.17612200 55.8800000 22.9700000
9 1 1 0.02042900 56.1600000 22.0400000
10 1 2 -0.34768900 55.9300000 24.0700000
11 1 1 0.07439383 55.5100000 25.0200000
12 1 1 0.07439383 55.4600000 23.7100000
13 1 1 0.07439383 57.0000000 24.2400000
14 1 2 0.02151800 54.4400000 22.8700000
15 1 1 0.08793975 54.5000000 22.4000000
$
答え2
ファイルを読み取り、awk
出力値を使用するために使用されますprintf
。
awk '{ printf ("%2d\t%s\t%s\t%11s\t%s\t%s\n", $1, $2, $3, $4, $5, $6); }' file
必要に応じてprintf形式の文字列を調整します。