解析文件并在每次出现后插入新行

Parse file and insert new line after each occurrence

在 Unix 系统上,我尝试使用 sedperl 在文件中添加新行,但似乎我遗漏了什么。

假设我的文件有多行文本,总是这样结束{TNG:}}${1:F01

我正在尝试找到一种在 }$ 之后添加新行的方法,这样 {1 应该总是从新行开始。

我试过用这个转义 $ 符号:

perl -e '$/ = "${"; while (<>) { s/$}\{$/}\n{/; print; }' 但它不起作用。

任何想法将不胜感激。

试一试:

sed 's/{TNG:}}$/&\n/' file > newfile

sed默认使用BRE,即{}是文字字符。但是我们必须逃避$.

kent$  cat f
{TNG:}}${1:F01.

kent$  sed 's/{TNG:}}$/&\n/' f
{TNG:}}$
{1:F01.

使用 perl:

$ cat input.txt
line 1 {TNG:}}${1:F01
line 2 {TNG:}}${1:F01
$ perl -pe 's/TNG:\}\}$\K/\n/' input.txt 
line 1 {TNG:}}$
{1:F01
line 2 {TNG:}}$
{1:F01

(阅读 perlrun 中的 -p-n 选项并使用它们,而不是尝试自己在单行中执行它们)