Vi/VIM查找和替换所有文本替换命令
时间:2020-01-09 10:44:06 来源:igfitidea点击:
如何在Linux操作系统上找到所有出现的单词eth0并将其替换为br0?
vi和vim文本编辑器均提供替代命令。
它用于查找/搜索和替换文本。
本教程说明如何使用替代命令查找和替换vim/vi文本。
VIM搜索和替换语法
语法如下:
:%s/Search/Replace/CommandFlag :%s/Search-Word/Replace-Word/g :%s/Search-Word/Replace-Word/g :%s/Search-Word/Replace-Word/gc ## Search and replace in the current line only ## :s/Find-Word/Replace-Word/gc ## Change each 'Unix' to 'Linux' for all lines from line 36 to line 42 ## :36,42s/Unix/Linux/g
VIM查找并替换
vi和vim都提供:s
命令来进行搜索和替换。
让我们看一些易于理解的例子。
例子
我将使用以下示例文本文件:
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ## full acess to lo and eth0 ## -A INPUT -i lo -j ACCEPT -A OUTPUT -o lo -j ACCEPT -A INPUT -i eth0 -j ACCEPT -A OUTPUT -o eth0 -j ACCEPT # log spoof -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP DROP SPOOF A: " -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP -A INPUT -i eth1 -s 172.16.0.0/12 -j LOG --log-prefix "IP DROP SPOOF B: " -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
要在"仅当前行"中查找每个eth0出现,并将其替换为br0,请输入(首先按" Esc"键并执行):
:s/eth0/br0/g
接下来尝试在vim下用br1查找并替换所有出现的eth1,执行:
:%s/eth1/br1/g
搜索并用br1替换所有出现的eth1,但首先在vim上要求确认,执行:
:%s/eth1/br1/gc
要查找所有不区分大小写的eth1并将其替换为br1,请执行:
:%s/eth1/br1/gi
上面的示例将找到eth1,ETH1,eTh1,ETh1等,并替换为br1。
要查找3到7行中所有出现的eth1并用br1替换,请执行:
:3,7s/eth1/br1/g
快速演示
动画gif 01:Vim查找和替换演示
替代语法
完整语法如下:
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
因此,对于[range]中的每一行,请将{pattern}的匹配项替换为{string}。
{pattern}是一个或者多个分支。
{string}可以是文字字符串。
当省略[范围]和[计数]时,仅在当前行替换。
如果指定了[count],请从[range]的最后一行开始在[count]行中进行替换。
如果省略[range],则从当前行开始。
[count]必须为正数。
在每一行上,删除整个单词Sysadmin的所有出现
是的,我们也可以删除单词:
:%s/\//g
如何删除整个单词method_的第一个匹配项以及随后的3个字符?
:%s/\.\{3}//
仅搜索和替换当前行
仅在当前行中找到bin的每个出现,然后在wrapper.sh中将其替换为sbin:
:%s/bin/sbin/gc