linux - sed 没有回应我

标签 linux sed

我正在尝试使用 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/

相关文章:

linux - 无法在亚马逊Linux实例上安装docker

linux - 使用链接 dlib 的 CMake 构建失败

bash - 如何将文本文件的每两行与 Bash 配对?

linux - 在 Linux 中使用 sed 替换字符串

linux - 用 sed -i 替换文件中的变量

character-encoding - sed 拒绝替换模式 -> 文件(编码)错误?

linux - curl : connection refused

linux - 如何使用 cloog 部署可移植 gcc?

java - 我应该将循环作业作为 CRON 还是使用 Java 构建的 JAR 来运行?

bash - 使用 sed/awk 从 ini 样式文件中读取值