Vim:将所有以string开头的行替换为line


9

在此文字上

hardware mac 33:33:333:33:33
hardware mac 33:13:333:33:33
hardware mac 33:23:333:23:34
hardware mac 33:033:133:33:35
...

我想替换所有以硬件mac开头的行

hardware mac 00:00:00:00:00:00

我努力了

sed s/^hardware mac/hardware mac 00:00:00:00:00:00/gc

并给出错误

也是经典的vim命令

%s:/^hardware mac/hardware mac 00:00:00:00:00:00/gc

但是,仅更改字符串硬件mac即可保留数字。如何用我的字符串替换以硬件mac开头的字符串?

Answers:


14

您几乎完全正确,只是忘记匹配其余行(在vim):

:%s/^hardware mac.*/hardware mac 00:00:00:00:00:00/gc

gc如果您确定自己在做什么,g则可以在最后删除这些选项,这可能是不必要的,因为您每行匹配的次数不会超过一次。

sed此相同:

sed -i 's/^hardware mac.*/hardware mac 00:00:00:00:00:00/' filename

请注意,sed与一样,的替换命令s不接受c(confirm)标志vim


1 FWIW的g/gc是多余的,因为此正则表达式只能匹配每行一个反正。
Sparhawk

当您撰写此评论时,我正在编辑我的答案(=
Kira 2016年

请注意,该sed语法是GNU样式。并非所有版本都支持-i,有些版本需要对其进行参数说明。
埃里克·雷诺夫
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.