Come visualizzare TSV (csv) nella console, quando mancano celle vuote per: `column -t -s $ '\ t'`


12

Ho un file con le colonne con tab.

Ho un file quando alcune righe hanno celle vuote (all'inizio, nel mezzo).

In questi casi column -t -s $'\t'semplicemente fallisce:

Ingresso:

$ 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

uscita colonna:

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

invece di:

A       B       C       D
        b1              d1
                        d2
a3                      d3

Potresti consigliarmi come eseguire la formattazione della riga di comando TSV? (in modo Unix, voglio reindirizzare l'output del programma nel formatter, come column)

Qualche modo di "fissare" l' columnapproccio? Forse un altro strumento?

Risposte:


12

Puoi semplicemente usare Debian column. Fornisce l'opzione -nche lo fa funzionare esattamente come vuoi.

In alternativa, puoi inserire uno spazio nelle colonne vuote, usando sed:

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

esempio:

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

Temo che sed si comporterà con un'alternativa '^ \ | \ t' ... dovuta a '^' non specifica gli atomi. (Quindi sostituirà \1con stringa vuota?
Grzegorz Wierzowiecki,

Sì, \(^\)solo corrisponde a una stringa vuota, ancorata all'inizio della riga. \1"produce una copia" di quella stringa vuota.
angus,

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

Il comando sopra è per pipe quindi sostituirlo con tabspace.

Devi solo sostituire le colonne vuote con uno spazio vuoto e reindirizzare l'output al comando che stai già utilizzando.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.