trimmed.txt 也不 grep -v "^$" file.txt > trimm-6ren">
gpt4 book ai didi

linux - 为什么 SED、GREP 或 AWK 无法从文本文件中删除空行?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:49 24 4
gpt4 key购买 nike

我正在尝试从大型文本文件中删除空行。出于某种原因,似乎两者都不是

sed "/^$/d" file.txt > trimmed.txt

也不

grep -v "^$" file.txt > trimmed.txt

也不是

awk /./ file.txt > trimmed.txt

做任何事情。有什么想法吗?

更新

感谢@fedorqui 和@Sebastian Stigler 的精彩评论,问题很快被确定为每行末尾的 DOS/Windows 回车符 (^M$)。

虽然我很欣赏 Sebatian 关于使用 dos2unix 重新格式化文件的建议,但我更愿意使用大多数 linux 发行版中普遍可用的工具来解决此问题。

对我有用的解决方案是@Jeremy Stein 对这个问题给出的答案 [ Can't remove empty lines with sed regex :

sed -n '/[!-~]/p' file.txt > trimmed.txt

最佳答案

我只是用玩具示例尝试了突击队员,只要 file.txt 是一个带有 unix 换行符的文件,它们就可以正常工作。如果文件包含 windows 换行符,则所有命令都无法删除空行。

您可以使用 dos2unix linux 工具将 file.txt 中的换行符转换为 unix 换行符。如果您需要在 Windows 系统上输出,则可以使用 unix2dostrimmed.txt 转换为带有 Windows 换行符的文件。

关于linux - 为什么 SED、GREP 或 AWK 无法从文本文件中删除空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28211638/

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