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

时间:2017-07-25 15:51:48

标签: linux bash shell

无论如何在2个特定字符集之间插入新行? 我希望每次O(NlogN)出现在文本文件中时插入一个新行,但是我希望在2个大括号之间插入这一新行。 例如}{

2 个答案:

答案 0 :(得分:7)

你可以运行

  

sed -i -e' s /} {/} \ n {/ g' FILENAME.EXT

,其中

  • sed是您的流编辑器程序
  • -iedit file filename.ext in place
  • 的选项
  • -e表示正则表达式
  • s/}{/}\n{/g是正则表达式,表示在每一行中查找} {的所有(g)个实例,并将其替换为} \ n {其中\n是新行的正则表达式。如果省略g,它将仅替换第一次出现的搜索模式,但仍然在每行中。

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

示例:

创建文件:

echo "First }{ Last" > repltest.txt

运行

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

将以下内容打印到STDOUT:

First }
{ Last

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

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

cat repltest.txt | sed -e 's/}{/}\n{/g'

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

相同

答案 1 :(得分:3)

使用sed

sed [-i] -e 's/}{/}\n{/g' file.txt

}{的每个实例都将替换为}\n{。如果要替换文件中的文本,可以使用-i标志。