Sed在每一行添加空格

时间:2012-09-23 02:22:47

标签: shell

我想在名为test的文本中插入4个空格。

sed 's/^/  \{4\}/'  test  

为什么它不起作用?我该怎么办?

我想要添加10个空格还是20个空白?

sed 's/^/    /' test  #can work ,but not well done

2 个答案:

答案 0 :(得分:2)

nneonneo解释了为什么你的脚本无效。众所周知,如何用空格填充左边的线条以获得固定宽度的线条,但是为sed中的每一行添加相同数量的空白到左边一行是一个不同的问题。

如果你能忍受除了sed以外的其他东西,

或者您可以使用ruby

ruby -e 'ARGF.each {|l| puts (" " * 4) + l}' test

或者您可以使用awk

awk '{for (i=0; i<4; i++) printf(" "); print $0}' test

perl

perl -ne 'printf "%s%s", (" " x 4), $_' test
编辑:我希望看到一个纯粹的sed解决方案。使用条件分支(t)似乎对填充有用,但不能按照你的要求进行。

答案 1 :(得分:2)

{n}重复不适用于替换模式。

只做

sed 's/^/    /' test