다음 형식의 파일이 있습니다
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 형식 문자열을 조정합니다.