내 파일의 열은 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
위 명령은 파이프에서 작동하므로 탭 공간으로 대체하세요.
빈 열을 공백으로 바꾸고 출력을 이미 사용 중인 명령으로 연결하기만 하면 됩니다.