다음과 같은 두 개의 열이 있는 파일이 있습니다(예).
파일 1:
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
포맷해야 합니다. 예상되는 출력은 다음과 같습니다.
파일 1:
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
답변1
입력에 열이 두 개만 있는 경우 를 사용하는 것이 좋습니다 . 그러나 유틸리티는 여러 개의 공백이나 탭을 열 구분 기호로 처리하므로 column -t
여기서는 제대로 작동하지 않습니다 .column
$ column -t file1
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
"Michael Rod"는 두 개의 열이므로 단일 행에 다른 행보다 열이 하나 더 많아 출력이 엉망이 됩니다.
마지막 열 앞에 탭 문자를 삽입한 다음 column
이를 구분 기호로만 사용하면 이 문제를 해결할 수 있습니다.
$ awk '{ $NF = "\t" $NF; print }' file1 | column -t -s $'\t'
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
awk에서 는 NF
필드(열) 수이고 $NF
는 마지막 필드의 데이터입니다. 내가 사용하는 스크립트는 간단합니다개정하다전체 줄을 인쇄하기 전에 앞에 탭 문자를 추가하여 마지막 필드의 데이터를 표시합니다.
쉘이 이를 이해하지 못하는 경우 $'\t'
데이터의 일부가 아닌 다른 문자를 선택할 수 있습니다.
awk '{ $NF = "@" $NF; print }' file1 | column -t -s '@'
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9