如何在2个特定字符之间插入新行

fep*_*p92 4 linux bash shell

无论如何在2个特定字符集之间插入新行?我希望每次}{在文本文件中插入一个新行,但是我希望在2个大括号之间插入这一新行.例如}\n{

amp*_*ent 7

你可以跑

sed -i -e's /} {/} \n {/ g'filename.ext

哪里

  • sed 是你的流编辑器程序
  • -i适当编辑文件的选项filename.ext
  • -e 表示正则表达式
  • s/}{/}\n{/g是正则表达式意味着在每一行中查找} {的所有(g)实例并将其替换为} \n {其中是新行的正则表达式.如果省略,它将仅替换第一次出现的搜索模式,但仍然在每一行中.\ng

要在更改文件之前进行测试,请省略该-i选项,它将在STDOUT中打印结果.

例:

创建文件:

echo "First }{ Last" > repltest.txt
Run Code Online (Sandbox Code Playgroud)

sed -e 's/}{/}\n{/g' repltest.txt
Run Code Online (Sandbox Code Playgroud)

将以下内容打印到STDOUT:

First }
{ Last
Run Code Online (Sandbox Code Playgroud)

要在同一文件中进行更改,请使用-i选项.

要对STDIN而不是文件运行此-i命令,请在输出STDIN的东西后省略和管道命令中的文件名,例如:

cat repltest.txt | sed -e 's/}{/}\n{/g'
Run Code Online (Sandbox Code Playgroud)

与...相同 sed -e 's/}{/}\n{/g' repltest.txt