1、Vi编辑器替换
vi/vim 中可以使用 :s 命令来替换字符串。
:s/error/wrong/:替换当前行第一个error为wrong;
:s/error/wrong/g:替换当前行所有error为wrong;
:n,$s/error/wrong/:替换第n行开始到最后一行中每一行的第一个error为wrong;
:n,$s/error/wrong/g:替换第n行开始到最后一行中每一行所有error为 wrong;
注:n为数字,表示第n行开始;若n为 .,表示从当前行开始。
:%s/error/wrong/:(等同于 :g/error/s//wrong/),替换每一行的第一个 error为wrong;
:%s/error/wrong/g:(等同于 :g/error/s//wrong/g),替换每一行中所有 error为wrong;
注:可以使用#作为分隔符,此时中间出现的/不会作为分隔符。
:s#error/#wrong/#:替换当前行第一个 error/为 wrong/;
:%s#/usr/bin#/bin#g:可以把文件中所有路径/usr/bin换成/bin
2、Sed命令替换
格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名
-i:表示直接修改文件
-r:表示搜索子目录
-l:表示输出匹配的文件名
s表示替换,d表示删除
示例:sed -i "s/well/good/g" test.txt
3、Sed其他用法
(1)删除行首空格
sed 's/^[ ]*//g' filename
sed 's/^ *//g' filename
sed 's/^[[:space:]]*//g' filename
(2)行后和行前添加新行
行后:sed 's/pattern/&\n/g' filename
行前:sed 's/pattern/\n&/g' filename
&代表pattern
(3)使用变量替换(使用双引号)
sed -e "s/$var1/$var2/g" filename
(4)在第一行前插入文本
sed -i '1 i\插入字符串' filename
(5)在最后一行插入
sed -i '$ a\插入字符串' filename
(6)在匹配行前插入
sed -i '/pattern/ i "插入字符串"' filename
(7)在匹配行后插入
sed -i '/pattern/ a "插入字符串"' filename
(8)删除文本中空行和空格组成的行以及#号注释的行
grep -v ^# filename | sed /^[[:space:]]*$/d | sed /^$/d