15

我有以下形式的文件:

interesting text-MIB blah blah blah
VERY INTERESTING TEXT
interesting text-MIB blah blah blah

在包含“-MIB”字符串的每一行中,我想删除该字符串后面的文本,直到行尾。

以下命令似乎按预期工作:

sed -i -n -e 's/-MIB.*$/-MIB/p' ./myfile

我的问题是它还会删除找不到我的模式的行。在这里,“非常有趣的文本”行将被删除。我对 sed 不是很熟悉。我究竟做错了什么?sed 适合这种治疗吗?

4

3 回答 3

5

我已经编辑了你的sed. 尝试这个,

sed -i.bak 's/-MIB.*$/-MIB/g' ./myfile

这里,

-i - 将对原始文件进行更改并以 .bak 扩展名备份原始文件

于 2013-06-25T12:32:03.340 回答
2

sed -np如果您将选项放在sed语句之后,选项会抑制默认打印,稍后会启用该默认打印。

在上面的示例中,您要说sed的是禁止打印所有行,然后仅打印那些已成功完成替换的行。因此,不会打印没有进行替换的行。

您需要从您的命令中删除该-n选项:p

sed -ie 's/-MIB.*$/-MIB/' ./myfile
于 2013-06-25T12:35:40.267 回答
2

您需要忽略该-n选项。查看http://www.gnu.org/software/sed/manual/sed.html#index-g_t_002d_002dquiet-7

于 2013-06-25T12:22:27.307 回答