원하는 형식의 출력으로 열 인쇄

원하는 형식의 출력으로 열 인쇄

내 파일에 다음 데이터 목록이 있습니다.

    -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)와 둘 다 양수 앞에 공백을 추가하여 음수와 정렬하는 mawkC 수정자를 지원하는 것으로 보입니다.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)

관련 정보