次のファイルがあります
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
?タブの代わりにスペースを使用します。