awk의 printf 기능을 사용하는 방법을 알고 있지만 모든 필드를 지정하고 싶지는 않습니다.
예를 들어, 이것이 내 파일이라고 가정하십시오.
c1|c2|c3|c4|c5
c6|c7|c8|c9|c10
c11|c12|c13|c14|c15
모든 레코드의 첫 번째 필드가 첫 번째 필드에서 가장 긴 셀인 c11의 너비가되도록 형식을 지정하고 싶습니다.
c1 |c2|c3|c4|c5
c6 |c7|c8|c9|c10
c11|c12|c13|c14|c15
본인은 다음을 지정할 수 있음을 이해합니다.
awk -F"|" '{printf "%-3s%s%s%s%s\n", $1, $2, $3, $4, $5}' file > newfile
첫 번째 열의 너비가 무엇인지 알고 싶다고 가정하지만 파일에 몇 개의 필드가 있는지는 모릅니다. 기본적으로 나는 다음과 같은 것을하고 싶다 :
... '{printf "%-3s|", $1}'
... 그런 다음 나머지 필드를 원래 형식으로 인쇄하십시오.
sed 's/|/'' '' '' |/;s/\(...\) */\1/'
(여기서 SE 주석이 인접한 공백을 하나로 압축 할 때 3 개의 공백을 삽입하기 위해 여분의 따옴표를 추가)