gpt4 book ai didi

regex - sed 用单个空行替换多个空行

转载 作者:行者123 更新时间:2023-12-05 00:25:19 26 4
gpt4 key购买 nike

我写了一个 sed 脚本,它用一个空行替换了多个空行,但它没有按预期工作。我会感谢每一个人,谁能解释我为什么。请不要让我引用工作示例,我熟悉 Google。我只是想了解 sed 是如何工作的。

代码是

sed ':a;/^\n*$/{N;ba};s/^\n\n*/\n/' input_file

所以逻辑很简单:当 sed 读取该行并且它是空白的或有几个换行符(这是 /^*\n$ 条件)时,我告诉 sed 将下一行附加到模式空间。一旦找到非空行,替换 s/^\n\n*/\n/已经完成了。

除了文件末尾有空行的情况外,一切正常。这些空白没有被单个空白替换,我不明白为什么。

有任何想法吗?

最佳答案

问题是sed获取 EOF在阅读下一行时。

在使用 N 阅读下一行时,您的命令已完成。 .因为,在阅读下一行时,sed获取 EOF .所以,它不会处理 s/^\n\n*/\n/代换。这就是为什么,您无法删除出现在文件末尾的空行序列。

我的解决办法是:

sed ':a; /^\n*$/{ s/\n//; N;  ba};' yourfile

关于regex - sed 用单个空行替换多个空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24781112/

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