【发布时间】:2023-03-03 16:51:01
【问题描述】:
当每行不匹配时,如何删除每行和的“^M”?命令是:
perl -pe 's{(">)[^</zone>]}{$1</zone>}g' $travail_dir/zones.txt >$travail_dir/ys.txt
我在我的 ys.txt 中得到了这个:
<zone^M
numero_page="005"></zone>^M
<zone^M
id_zone="2"^M
numero_page="005"></zone>
如何修改我的命令以获得没有“^M”的预期结果?
【问题讨论】:
-
[^</zone>]是错误的,你是说(">)(?!</zone>)吗?试试perl -pe 's/\r//g;s{(">)(?!</zone>)}{$1</zone>}g' -
谢谢@WiktorStribiżew 是的,你是对的,你救了我,谢谢
-
@choroba 用正则表达式解析有效的 XML 确实是个坏主意,但在这里,XML 是无效的,OP 会尝试使其有效以使其可解析。
-
也许您从 MS Windows 获得了该文件并在 Linux 中使用它。 Windows 和 Unix 有不同的行尾。您可以使用编辑器vim 进行所需的更改,在大多数情况下已安装。使用编辑器
vim filename打开文件,在编辑器中发出命令:set ff=unix并保存文件:wq。或者,如果您的系统中有可用的实用程序dos2unix,您可以使用它。
标签: regex perl regex-lookarounds