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

问题描述 投票:0回答:2

在Unix系统上,我试图使用sedperl在文件中添加新行,但似乎我缺少某些内容。

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

我正在尝试找到一种在}$之后添加新行的方式,因此{1应该始终从新行开始。

我通过使用以下命令转义$符号来尝试:

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

任何想法都会受到赞赏。

perl sed ksh aix
2个回答
0
投票

使用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

((请阅读-p中的-nperlrun选项,而不要自己尝试一口气地使用它们)


0
投票

尝试一下:

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

sed默认情况下将使用BRE,即{}是文字字符。但是我们必须转义$

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

kent$  sed 's/{TNG:}}\$/&\n/' f
{TNG:}}$
{1:F01.
© www.soinside.com 2019 - 2024. All rights reserved.