sed将空格插入到特定行

Yo *_* Al 58 linux bash sed

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

hello
world
Run Code Online (Sandbox Code Playgroud)

结果:

hello
    hello world
world
Run Code Online (Sandbox Code Playgroud)

我正在使用这个sed脚本:

sed -i "${line} i ${text}" $file
Run Code Online (Sandbox Code Playgroud)

问题是我得到的新线路没有空格:

hello
hello world
world
Run Code Online (Sandbox Code Playgroud)

Atr*_*opo 77

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

sed -i "${line} i \ \ ${text}" $file
Run Code Online (Sandbox Code Playgroud)

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

text="\ \ hello world"
Run Code Online (Sandbox Code Playgroud)

  • 你只能逃离第一个空间.Sed似乎自动识别其余的空间.例如,`a\text`在前面附加4个空格的文本. (14认同)

小智 21

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

sed -i "${line} i \    ${text}" $file
Run Code Online (Sandbox Code Playgroud)


dev*_*ull 5

$ a="  some string  "
$ echo -e "hello\nworld"
hello
world
$ echo -e "hello\nworld" | sed "/world/ s/.*/${a}.\n&/" 
hello
  some string  .
world
Run Code Online (Sandbox Code Playgroud)

.是在上述取代加到证明尾随whitepsaces被保留。使用sed "/world/ s/.*/${a}\n&/"来代替。