如果只包含特定数字,则使用sed删除整行


8

我有一个txt文件

123
456
789
456
123456

我想从文件中删除特定字符,即(123)。我尝试过

$ sed -i '/123/d' dummy.sh
$ vi dumm.txt
456
789
456

在下面的命令中,当我运行时,两个单词(123123456)都将被删除,但是我只需123要从文件中删除

$ sed -i 's/123//g' dummy.sh
$ vi dumm.txt
456
789
456
456

当我运行以下命令时,123它将被替换为null。

任何人都可以说如果只包含特定数字则删除整个行吗?


2
一言以蔽之-
螺丝刀

我没有明白你的要求?
Rak kundra

1
请注意,虽然可以很好地使用sed来完成此任务,但grep是专门为显示或隐藏与模式匹配的输入行而创建的工具。在这种情况下,以下grep命令将执行相同的操作:grep -E -v'^ 123 $'dumm.txt
Gnudiff

4
@Gnudiff grep如果您使用那样的话,我看不出任何优势。但由于具有以下选项,它在某些任务上可能会更好:grep -xv 123
Philippos

Answers:


19

目前尚不清楚您是要删除整行123还是将其替换为空行。无论如何,只需添加开始的锚点^$行首和行尾的到您的模式中:

sed -i '/^123$/d' dummy.sh      #delete whole line
sed -i 's/^123$//' dummy.sh     #replace with empty line

是的,我知道了,谢谢。我正在尝试删除整行。
拉克·昆德拉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.