내 파일에 다음 데이터 목록이 있습니다.
-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)