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

elb*_*rna 9 vim

在这段文字上

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
...
Run Code Online (Sandbox Code Playgroud)

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

hardware mac 00:00:00:00:00:00
Run Code Online (Sandbox Code Playgroud)

我试过了

sed s/^hardware mac/hardware mac 00:00:00:00:00:00/gc
Run Code Online (Sandbox Code Playgroud)

并给出错误

还有经典的 vim 命令

%s:/^hardware mac/hardware mac 00:00:00:00:00:00/gc
Run Code Online (Sandbox Code Playgroud)

但只更改字符串硬件 mac,而不会更改数字。如何用我的字符串替换以硬件mac开头的字符串?

Kir*_*ira 15

您几乎做对了,只是忘记匹配该行的其余部分(在vim):

:%s/^hardware mac.*/hardware mac 00:00:00:00:00:00/gc
Run Code Online (Sandbox Code Playgroud)

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

有了sed它是同样的事情:

sed -i 's/^hardware mac.*/hardware mac 00:00:00:00:00:00/' filename
Run Code Online (Sandbox Code Playgroud)

请注意,sed的替换命令s不接受c(确认)标志,就像vim