![awk를 사용하여 출력의 열 형식 지정](https://linux55.com/image/161134/awk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%B6%9C%EB%A0%A5%EC%9D%98%20%EC%97%B4%20%ED%98%95%EC%8B%9D%20%EC%A7%80%EC%A0%95.png)
9003개의 행을 포함하는 다음과 같은 데이터 세트 이름 a.txt가 있습니다.
571 43544000424023503222
572 43504442020202303202
573 40340440323043033204
574 40303445340343505242
... ...
16078 50200000023322000202
16079 33233500320452300252
16080 04200330233532050502
16081 30200400323435434202
첫 번째 열의 값이 오른쪽 정렬되고 두 번째 열의 모든 행이 동일한 필드로 시작하며 다음과 같이 첫 번째 열과 두 번째 열 사이에 공백이 있는 데이터 파일을 가져오고 싶습니다.
571 435440004240235032225
572 435044420202023032022
573 403404403230430332040
574 403034453403435052423
... ...
16078 502000000233220002021
16079 332335003204523002521
16080 042003302335320505023
16081 302004003234354342024
나는 이 코드를 시도하고 있습니다 :
awk '{printf "%-5s \n", $1,$2}' a.txt | # -5 indicate the maximum number of characters in the first column
expand > b.txt
두 번째 열은 올바른 위치에서 시작하지만 첫 번째 열은 다음과 같이 출력에서 왼쪽 정렬됩니다.
571 43544000424023503222
572 43504442020202303202
573 40340440323043033204
574 40303445340343505242
... ...
16078 50200000023322000202
16079 33233500320452300252
16080 04200330233532050502
16081 30200400323435434202
이 문제를 해결하는 데 도움을 주실 수 있나요?
미리 감사드립니다.
답변1
-
플래그(왼쪽 정렬)가 필요하지 않으며 기본 정렬은 오른쪽입니다.
awk '{printf "%5s %s\n",$1,$2}' a.txt
답변2
printf
문자열 길이 수정자를 사용하여 문자열의 형식을 오른쪽 맞춤으로 지정할 수 있습니다 . len
첫 번째 필드 앞의 간격 길이입니다.
awk '{len=5-length($1); printf "%-*.*s %s %s\n", len,len," ",$1,$2}' a.txt