0

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

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

为什么它不能工作?我该怎么办?

我想添加 10 个空格或 20 个空格怎么样?

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

2 回答 2

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) 似乎对填充很有用,但不能满足您的要求。

于 2012-09-23T02:23:54.580 回答
2

{n}重复在替换模式中不起作用。

做就是了

sed 's/^/    /' test
于 2012-09-23T02:24:04.677 回答