使用正则表达式的换行

时间:2018-06-19 14:03:52

标签: regex

我有多个如下所示的xml文件:<TEST><TEST><TEST><TEST><TEST><TEST><TEST><TEST><TEST><TEST> 我想为每个“ <”打一个新的样子,并摆脱每个“>”。 我想通过正则表达式执行此操作,因为我正在研究的是* nix。

1 个答案:

答案 0 :(得分:2)

regex无需进行如此简单的搜索和替换。您想将<替换为\n<,并将>替换为空字符串。

假设您的内容位于文件input.txt中,此简单的sed命令行即可完成此任务:

sed 's/</\n</g;s/>//g' input.txt

工作原理

有两个sed命令,它们之间用;隔开:

s/</\n</g
s/>//g

两个命令均为s(搜索并替换)。 s命令要求搜索regex(此处无正则表达式),替换字符串和一些可选标记,并用/分隔。

第一个s搜索<并将其替换为\n<\nregex和许多Unix工具中的换行符的常用符号(即使不涉及regex时也是如此)。

第二个s搜索>并将其替换为空白。

两个s命令都使用g global )标志,该​​标志告诉他们进行每行可以做的所有替换。 sed对输入的每一行运行每个命令,默认情况下,s在第一次替换(一行)后停止。