열에 텍스트 파일의 내용을 표시하는 방법 [중복]

열에 텍스트 파일의 내용을 표시하는 방법 [중복]

다음과 같은 파일이 있습니다

Id 123 
Name john
Lastname udosen
Tel 123456
Id 124
Name james
Lastname david
Tel 19865

파일을 인쇄하는 방법은 다음과 같습니다

Id     Name     Lastname    Tel
123    john     udosen      123456
124    james    david       19865

답변1

탭으로 구분된 출력을 원한다고 가정해 보겠습니다.

$ { printf '%s\n' Id Name Lastname Tel; sed 's/^[^[:blank:]]*.//' file; } | paste - - - -
Id      Name    Lastname        Tel
123     john    udosen  123456
124     james   david   19865

sed각 줄(제목)에서 초기 공백이나 탭으로 구분된 단어를 제거하는 데 사용됩니다 . 결과를 paste형식 에 제공 하고 탭으로 구분된 4개의 열로 형식을 지정합니다. 먼저 출력을 사용하여 헤더를 추가합니다 printf.

테이블을 생성 하는 데 사용할 수 있는 보기 좋은(정렬된) 출력을 원합니다 column. 여기서는 열 사이에 paste삽입 ;한 다음 이를 사용하여 column필드를 정렬 하도록 지시합니다 .

$ { printf '%s\n' Id Name Lastname Tel; sed 's/^[^[:blank:]]*.//' file; } | paste -d ';' - - - - | column -t -s ';'
Id   Name   Lastname  Tel
123  john   udosen    123456
124  james  david     19865

당신은 또한 사용할 수 있습니다 csvlook(일부csvkit)는 비슷한 방식으로 Markdown 형식의 테이블을 생성합니다.

$ { printf '%s\n' Id Name Lastname Tel; sed 's/^[^[:blank:]]*.//' file; } | paste -d ';' - - - - | csvlook -I -d ';'
| Id  | Name  | Lastname | Tel    |
| --- | ----- | -------- | ------ |
| 123 | john  | udosen   | 123456 |
| 124 | james | david    | 19865  |

관련 정보