3

column -t1つのニットで素晴らしいです:列間に出力されるスペースの数を変更するにはどうすればよいですか? 私は1つが欲しい。 column -t2を与えます。例えば、

echo -en '111 22 3\n4 555 66\n' | column -t

出力

111  22   3
4    555  66

しかし、私はそれを次のように出力したいと思います:

111 22  3
4   555 66

sed regex を介して出力を実行して、2 つのスペースの後に単語の境界を 1 つのスペースに変換できると思いますが、必要でない限り、別のツールをミックスに追加することは避けたいと思います。

提案?同じことを実現する代わりに使用できる単純な置換コマンドはcolumn -t? awk を使用して OFS ゲームをプレイすることは、ドロップインの代替品とは思えません。

4

3 に答える 3

2

の組み込みの間隔を変更することはできませんcolumn。これにより、別のツールに切り替えるか、後処理する必要があります。sed各数字の前に単一のスペースを削除することで、はしごを安価に実現できます。

echo -en '111 22 3\n4 555 66\n' | column -t | sed 's/ \([0-9]\)/\1/g'

出力:

111 22  3
4   555 66
于 2012-09-21T18:24:23.983 に答える
0

columnからに切り替えるprとよいでしょう。pr出力フォーマットを制御するためのより多くのオプションがあり、列を作成することもできます...

例えば:

echo -en '111 22 3\n4 555 66\n' | tr ' ' '\n' | pr -3aT -s' '

生成:

111 22 3
4 555 66

スペースを減らしながら配置を維持する方法がわからないため、完璧ではありません。

各エントリが 1 行にあることを期待trしているため、 がそこにあります。pr

于 2012-09-21T18:22:01.893 に答える
0

を使うのが一番簡単だと思いますtabs。あなたの出力では、タブ番号 5 が期待されていますtabs 5。これにより、タブ幅が 5 に変更されます。

次に、次のように入力します。

echo -en '111 22 3\n4 555 66\n' | tr ' ' '\t'

また:

echo -en '111\t22\t3\n4\t555\t66\n'

結果:

111 22  3
4   555 66

詳細については、次のように入力してください。man tabs

于 2012-09-22T04:23:15.753 に答える