使用类似 XML 的标签对随机标记的行进行标记

使用类似 XML 的标签对随机标记的行进行标记

我有一个文件,其中有一些随机行被标记%,如何使用类似 xml 的标签来标记所有被标记的内容。

例子:

tt gs sdf 
% sdjfsg
% sdfsdf

sdfsdf

% sdfsd
% rewerwe

到:

tt gs sdf 
<TAG>sdjfsg
sdfsdf</TAG>

sdfsdf

<TAG>sdfsd
rewerwe</TAG>

答案1

您可以给‘sed’一个机会......

sed -ri ':x;$!{N;bx};s/% ([^\n]*)(\n|$)/<tag>\1<\/tag>\n/g;s/<\/tag>\n<tag>/\n/g;s/\n$//' tst.txt

这将标记您的文件。

解释:

  1. :x;$!{N;bx}--> 将文件覆盖到一个缓冲行
  2. s/% ([^\n]*)(\n|$)/<tag>\1<\/tag>\n/g--> 标记所有以 '% ' 开头的行
  3. s/<\/tag>\n<tag>/\n/g--> 删除不需要的标签(如果结束标签后跟开始标签)
  4. s/\n$//--> 删除文件末尾不需要的换行符

最终可以做得更短,但这是我能想到的第一个直接的方法。

相关内容