Unixの列間に複数のスペースを追加する方法

Unixの列間に複数のスペースを追加する方法

次のファイルがあります

0 1 2 3 4 1 0 0
1 2 3 5 0 1 0 0

列の間に多くの(複数の)スペースを追加し、次のようなものを取得したいと思います。

0      1      2      3      4
1      2      3      5      0   

私はカラム-tを使って何かを試しましたが、私はまだ私が望むスペースを提供していません。

答え1

coreutilsを使用すると、次を使用してスペースをタブに変換し、次を使用してtrタブを複数のスペースに変換することもできますexpand

$ tr ' ' '\t' < file | expand
0       1       2       3       4       1       0       0
1       2       3       5       0       1       0       0

デフォルトのタブストップは8つのスペースですが、調整できます。

$ tr ' ' '\t' < file | expand -t 10
0         1         2         3         4         1         0         0
1         2         3         5         0         1         0         0

答え2

サンプルデータに関するいくつかの追加のアイデア:

$ a="0 1 2 3 4 1 0 0"

$ echo "$a"
0 1 2 3 4 1 0 0

$ echo "${a// /                 }"
0                 1                 2                 3                 4                 1                 0                 0

$ echo "$a" |sed 's/ /             /g'
0             1             2             3             4             1             0             0

$ echo "${a// /$'\t'}"
0   1   2   3   4   1   0   0

$ echo "$a" |sed 's/ /\t\t/g'
0       1       2       3       4       1       0       0

答え3

列形式を一様に指定するには、awkを使用できます。

awk '{ for(i=1;i <= NF; i++) { printf "%-7s", $i } print "" }' < input > output

答え4

頑張るcol -x?タブの代わりにスペースを使用します。

関連情報