我有一个文件看起来像这样
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
我尝试使用 column -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
?它使用空格而不是制表符。