如何在控制台中显示 TSV (csv),当空单元格丢失时:`column -t -s $'\t' `

Grz*_*cki 13 text-processing csv spreadsheet

我有列用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
Run Code Online (Sandbox Code Playgroud)

列输出:

$ cat in.tsv | column -t -s $'\t'
A   B   C  D
b1  d1
d2
a3  d3
Run Code Online (Sandbox Code Playgroud)

代替:

A       B       C       D
        b1              d1
                        d2
a3                      d3
Run Code Online (Sandbox Code Playgroud)

您能否推荐如何进行 TSV 命令行格式化?(以 Unix 方式,我想将程序的输出通过管道传输到格式化程序中,例如column

任何“修复”column方法?也许是另一种工具?

ang*_*gus 13

你可以只使用 Debian 的column. 它提供了-n使其完全按照您想要的方式工作的选项。

或者,您可以使用sed以下方法在空列中放置一个空格:

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

例子:

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