我有一个文件,其中有一些随机行被标记%
,如何使用类似 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
这将标记您的文件。
解释:
:x;$!{N;bx}
--> 将文件覆盖到一个缓冲行s/% ([^\n]*)(\n|$)/<tag>\1<\/tag>\n/g
--> 标记所有以 '% ' 开头的行s/<\/tag>\n<tag>/\n/g
--> 删除不需要的标签(如果结束标签后跟开始标签)s/\n$//
--> 删除文件末尾不需要的换行符
最终可以做得更短,但这是我能想到的第一个直接的方法。