熱間隔をもう一度考えてください

熱間隔をもう一度考えてください

次の形式のファイルがあります

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形式の文字列を調整します。

関連情報