90

我在开头有一行空格,例如“Hello world”。我想将此行插入文件中的特定行。例如在下一个文件中插入“hello world”

hello
world

结果:

hello
    hello world
world

我正在使用这个 sed 脚本:

sed -i "${line} i ${text}" $file

问题是我得到了没有空格的新行:

hello
hello world
world
4

4 回答 4

115

您可以转义space字符,例如添加 2 个空格:

sed -i "${line} i \ \ ${text}" $file

或者您可以在text变量的定义中执行此操作:

text="\ \ hello world"
于 2013-08-26T08:25:09.590 回答
43

你只需要一个\输入多个这样的空白

sed -i "${line} i \    ${text}" $file
于 2017-04-19T09:22:16.717 回答
5
$ a="  some string  "
$ echo -e "hello\nworld"
hello
world
$ echo -e "hello\nworld" | sed "/world/ s/.*/${a}.\n&/" 
hello
  some string  .
world

在上面的.替换中添加了 ,以证明保留了尾随的空白。改为使用sed "/world/ s/.*/${a}\n&/"

于 2013-08-26T08:29:34.770 回答
0

可以通过像这样拆分表达式来完成:

sed -i $file -e '2i\' -e "     $text"

这是一个 GNU 扩展,用于更轻松地编写脚本。

于 2020-04-11T15:01:27.057 回答