我正在尝试使用 sed 但无法让它工作。我的系统是带有 GNU sed 4.2.2 的 Ubuntu 16.04.2
我有一个文件夹,里面有很多我想编辑的文本文件。从该文件夹中的终端,我尝试了以下操作(分别 - 一次一个命令)。
从所有文件中删除空行:sed -i '/^$/d' *txt
如果行中包含空格:sed -i '/^\s*$/d' *txt
删除第 4 行:sed -i '4d' *.txt
在每种情况下,终端中都没有错误消息,但不会发生更改。我尝试了相同的命令,但针对单个文件而不是所有文件,因此使用文件名而不是 *.txt,但仍然没有实现任何更改。
sed 处于事件状态的唯一标志是如果我不执行 -i 而是请求一个新文件:sed '4d' fred.txt > fred2.text
新文件 fred2 已创建 - 但第 4 行仍然存在! 我错过了什么?我怎样才能让 sed 实际执行这些命令? 感谢您的帮助。
最佳答案
在更详细地查看文件并进行一些试验后,我发现了问题所在:我试图用 sed 编辑的文本文件有 CR 行尾字符。当我将其更改为 LF 时,sed 命令运行良好。 感谢那些提出建议的人。
关于linux - sed 没有回应我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43137463/