awk에서 오른쪽 정렬 열을 인쇄하는 방법은 무엇입니까?

awk에서 오른쪽 정렬 열을 인쇄하는 방법은 무엇입니까?

다음과 같은 입력 데이터가 있습니다.

V 0.886 3.768 -2.882
C -0.082 3.768 -3.850
M -0.900 3.769 4.669
F -0.001 3.768 -3.769

출력 형식은 다음과 같을 것으로 예상됩니다.

V    0.886  3.768    -2.882
C   -0.082  3.768    -3.850
M   -0.900  3.769     4.669
F   -0.001  3.768    -3.769

나는 다음 명령을 사용합니다. awk -v '{print $1, "\t", $2, "\t", $3, "\t", $4}'그러나 대기열의 줄이 아닌 줄을 인쇄합니다.

V  0.886  3.768  -2.882
C  -0.082 3.768  -3.850
M  -0.900 3.769  4.669
F  -0.001 3.768  -3.769

column -t명령은 또한 원하는 결과를 표시하지 않습니다. 다음과 같이 나타납니다.

V    0.886  3.768     -2.882
C    -0.082  3.768    -3.850
M    -0.900  3.769    4.669
F    -0.001  3.768    -3.769

이 문제를 해결하는 방법을 알려주실 수 있나요?

답변1

데이터를 탭으로 구분된 열로 인쇄하려는 것 같습니다. 각 숫자 열은 소수점 3자리(기본적으로 오른쪽 맞춤)가 포함된 6자 폭의 부동 소수점 형식 printf으로 지정되어야 합니다.%6.3f

$ awk '{ printf "%s\t%6.3f\t%6.3f\t%6.3f\n", $1, $2, $3, $4 }' file
V        0.886   3.768  -2.882
C       -0.082   3.768  -3.850
M       -0.900   3.769   4.669
F       -0.001   3.768  -3.769

이는 4개 필드의 각 세트를 인쇄하기 위해 printf형식 문자열과 함께 사용됩니다 . %s\t%6.3f\t%6.3f\t%6.3f\n첫 번째 필드는 문자열( %s)로 인쇄되고, 다른 필드는 위와 같은 형식으로 지정됩니다. 각 필드 사이에는 탭 문자( )가 출력되고, \t끝에는 줄 바꿈 문자( )가 출력됩니다.\n

이렇게 하면 필드가 공백 문자로 채워지는 탭으로 구분된 데이터가 생성됩니다. 아래에서 탭은 ^I출력에 다음과 같이 표시됩니다 cat -t.

$ awk '{ printf "%s\t%6.3f\t%6.3f\t%6.3f\n", $1, $2, $3, $4 }' file | cat -t
V^I 0.886^I 3.768^I-2.882
C^I-0.082^I 3.768^I-3.850
M^I-0.900^I 3.769^I 4.669
F^I-0.001^I 3.768^I-3.769

관련 정보