为什么 sed 不工作?

为什么 sed 不工作?

我有一个文件,其中一行有很多!字符。我想删除所有!字符。

我尝试过这个:

sed s/!// myfile

和这个:

sed 's/!//' myfile

和这个:

sed 's/"\!*"//' myfile

但它们都只是打印出所有的“!”。

我肯定忽略了一些显而易见的东西。有什么想法吗?

答案1

将 添加g到正则表达式中,以进行全局替换。否则,只会替换第一次出现的匹配项:

sed s/\!//g myfile

答案2

尝试这个:

$ sed s/\!//g myfile

答案3

不要忘记可怜的老tr

tr -d '!' < filename

tr 仅对 stdin 进行操作,因此您必须将数据通过管道传输到其中。

答案4

您必须指定要删除的每个出现项:sed 's/!//g' myfile
注意g,表示“贪婪”。
如果没有“g”,则只会删除第一个“!”

相关内容