열 간격을 다시 생각해보세요

열 간격을 다시 생각해보세요

다음 형식의 파일이 있습니다

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 형식 문자열을 조정합니다.

관련 정보