私のファイルの列は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コマンドラインフォーマットの指定方法をお勧めできますか? (Unix方式ではプログラムの出力をフォーマッタにパイプしたいと思います。例えば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
上記のコマンドはパイプで機能するため、タブスペースに置き換えてください。
空の列を空白に置き換えて、出力をすでに使用しているコマンドにリンクするだけです。