首页 > s-sed替换或者修改文件指定行,同时匹配多个字符串,替换换行符为指定字符

s-sed替换或者修改文件指定行,同时匹配多个字符串,替换换行符为指定字符

最近需要在脚本中修改几个配置文件参数且不能影响其他参数,于是想到了sed的强大之处,拿来学学

  • -i参数表示直接替换并修改文件 -i参数时直接修改文件

    sed -i 's/aaa/bbb/g' testfile

    将testfile文件中的aaa替换为bbb字符串

  • 删除文件指定行或者某行内容

    sed -i '/aaa/d' testfile 删除包含aaa字符串的行

  • 或 匹配删除(还可以插入,方式一样)

    sed -i '/aaa|bbb/d' testfile 删除包含aaa或者bbb字符串所在的行

  • 且 匹配删除(还可以插入,匹配方式一样)

    sed -i '/aaa/{/bbb/d} ' testfile 删除包含aaa且bbb字符串所在的行

  • 在指定文件内容中上下行添加指定内容 /a 为下一行添加,/i为上一行添加

    sed -i '/ddd/a777' testfile在testfile文件中包含ddd字符串所在的行的上一行添加内容777

    sed -i '/ddd/i222' testfile在testfile文件中包含ddd字符串所在的行的下一行添加内容为222

  • 添加shell中的变量,只需要修改单引号为双引号即可

    sed -i "/aaaa/addd=$a $b" testfile在aaaa的下一行增加ddd=(shell中的变量(shell中的变量(shella),同时增加换行后再次增加一个变量$b

  • 去除一行字符串中的部分字符

    echo "abaabbb" |sed 's/a//g' 将字符串中abaabbb包含a的字符去除

  • 替换行末的换行符 为指定的’,’

    sed ':a;N;$!ba;s/ /,/g'

    [root@node2 ~]# echo -e "1
    2
    3"
    1
    2
    3
    [root@node2 ~]# echo -e "1
    2
    3"|sed ':a;N;$!ba;s/
    /,/g'
    1,2,3
    

更多相关: