다음과 같은 입력 데이터가 있습니다.
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