빈 셀이 누락된 경우 콘솔에 TSV(csv)를 표시하는 방법: `column -t -s $'\t' `

빈 셀이 누락된 경우 콘솔에 TSV(csv)를 표시하는 방법: `column -t -s $'\t' `

내 파일의 열은 tab.

일부 행에 빈 셀이 있는 경우(처음, 중간) 파일이 있습니다.

이 경우에는 column -t -s $'\t'단순히 실패합니다.

입력하다:

$ echo -e 'A\tB\tC\tD\n\tb1\t\td1\n\t\t\td2\na3\t\t\td3' > in.tsv
$ hexdump -C in.tsv 
00000000  41 09 42 09 43 09 44 0a  09 62 31 09 09 64 31 0a  |A.B.C.D..b1..d1.|
00000010  09 09 09 64 32 0a 61 33  09 09 09 64 33 0a        |...d2.a3...d3.|
0000001e

열 출력:

$ cat in.tsv | column -t -s $'\t'
A   B   C  D
b1  d1
d2
a3  d3

바꾸다:

A       B       C       D
        b1              d1
                        d2
a3                      d3

TSV 명령줄 형식 지정 방법을 추천해 주실 수 있나요? (유닉스 방식에서는 프로그램의 출력을 포맷터로 파이프하고 싶습니다. 예를 들어 column)

"수정"이 있습니까 column? 어쩌면 또 다른 도구일까요?

답변1

Debian을 사용하면 원하는 방식으로 정확하게 작동하도록 하는 옵션을 column제공합니다 .-n

또는 다음을 사용하여 빈 열에 공백을 넣을 수 있습니다 sed.

sed ':x s/\(^\|\t\)\t/\1 \t/; t x' < in.tsv | column -t -s $'\t'

예:

$ sed ':x s/\(^\|\t\)\t/\1 \t/; t x' < in.tsv | column -t -s $'\t'
A   B   C  D
    b1     d1
           d2
a3         d3

답변2

sed 's/||/| |/g;s/||/| |/g' filename-here

위 명령은 파이프에서 작동하므로 탭 공간으로 대체하세요.

빈 열을 공백으로 바꾸고 출력을 이미 사용 중인 명령으로 연결하기만 하면 됩니다.

관련 정보