gpt4 book ai didi

regex - 用 perl 查找和替换双换行符?

转载 作者:行者123 更新时间:2023-12-04 16:21:45 26 4
gpt4 key购买 nike

我正在清理一些网页,这些网页由于某种原因在标签之间有大约 8 个换行符。我想删除其中的大部分,我试过这个

perl -pi -w -e "s/\n\n//g" *.html

但没有运气。为了更好的衡量,我试过
perl -pi -w -e "s/\n//g" *.html

它确实删除了我所有的换行符。我究竟做错了什么?

编辑 我也试过 \r\n\r\n ,同样的交易。用作单个换行符,对两个连续的换行符不执行任何操作。

最佳答案

使用 -0 :

perl -pi -0 -w -e "s/\n\n//g" *.html

问题是默认情况下 -p一次读取一行文件。没有包含两个换行符的行,因此您没有找到任何换行符。 -0将行结束符更改为 "\0" ,它可能不存在于您的文件中,因此它会立即处理整个文件。 (即使文件确实包含 NUL,您也在寻找连续的换行符,因此在 NUL 分隔的块中处理它不会有问题。)

您可能也想调整您的正则表达式,但很难确定您想要什么。试试 s/\n\n+/\n/g ,它将用单个换行符替换任意数量的连续换行符。

如果文件非常大,您可能没有足够的内存将其加载到单个块中。一个解决方法是选择一些足够常见的字符来将文件分成可管理的块,并告诉 Perl 使用它作为行结束字符。但它也必须是一个不会出现在您要替换的匹配项中的字符。例如, -0x2e将在 "." 上拆分文件(ASCII 0x2E)。

关于regex - 用 perl 查找和替换双换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3535809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com