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


12

열이있는 파일이 있습니다 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방식이 있습니까? 다른 도구일까요?

답변:


12

데비안을 사용할 수 있습니다 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

'^'이 원자를 지정하지 않기 때문에 sed가 대체 '^ \ | \ t'와 함께 어떻게 작동하는지 두려워합니다. (그래서, 그것을 대체 할 것입니다 \1빈 문자열로?
그르 Wierzowiecki

그렇습니다 \(^\). 빈 줄과 일치하여 줄의 시작 부분에 고정됩니다. \1빈 문자열의 "사본을 생성합니다".
angus

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

위 명령은 파이프 용이므로 탭 스페이스로 바꾸십시오.

빈 열을 빈 공간으로 바꾸고 출력을 이미 사용중인 명령으로 파이프하면됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.