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

12-28 13:41