Boş hücreler kaçırıldığında TSV (csv) konsolunda nasıl görüntülenir: `` column -t -s $ '\ t' '


12

Spearated sütunları olan bir dosya var tab.

Bazı satırlar boş hücreler (başlangıçta, ortada) olduğunda dosya var.

Bu gibi durumlarda column -t -s $'\t'sadece başarısız olur:

Giriş:

$ 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

sütun çıkışı:

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

onun yerine:

A       B       C       D
        b1              d1
                        d2
a3                      d3

TSV komut satırı biçimlendirmesinin nasıl yapılacağını önerebilir misiniz? (Unix şekilde, program çıktısını formatlayıcıya aktarmak istiyorum column)

"Düzeltme" columnyaklaşımı herhangi bir yolu var mı? Belki başka bir araç?

Yanıtlar:


12

Sadece Debian'ları kullanabilirsiniz column. -nTam istediğiniz şekilde çalışmasını sağlayan bir seçenek sunar.

Alternatif olarak, aşağıdakileri kullanarak boş sütunlara boşluk koyabilirsiniz sed:

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

misal:

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

Korkarım '^' atomları belirtmediğinden, alternatif '^ \ | \ t' ... ile nasıl davranacağından korkuyorum. (Öyleyse, \1boş dize ile değiştirilecek mi?
Grzegorz Wierzowiecki

Evet, \(^\)tek başına satırın başına sabitlenmiş boş bir dize ile eşleşir. \1o boş dizenin "bir kopyasını üretir".
angus

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

Yukarıdaki komut boru içindir, bu yüzden sekme alanı ile değiştirin.

Boş sütunları boş bir alanla değiştirmeniz ve çıktıyı zaten kullandığınız komuta yönlendirmeniz yeterlidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.