텍스트를 열 형식으로 지정

텍스트를 열 형식으로 지정

다음과 같은 두 개의 열이 있는 파일이 있습니다(예).

파일 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

관련 정보