美文网首页Linux命令集合
Linux_066_sed练习题2

Linux_066_sed练习题2

作者: 为宇绸缪 | 来源:发表于2022-02-28 21:51 被阅读0次

    以后再配图

    替换文件的root为yu,只替换一次,与替换所有
    sed 's/root/yu/p' pwd2.txt -n
    sed 's/root/yu/gp' pwd2.txt -n

    替换文件所有的root为yu,且仅仅打印替换的结果
    sed 's/root/yu/gp' pwd2.txt -n

    替换前10行bin开头的用户,改为C,且仅仅显示替换的结果
    sed -n "1,10s/^bin/C/gp" pwd2.txt

    替换前10行b开头的用户,改为C,且将m开头的行,改为M,且仅仅显示替换的结果
    sed -n -e "1,10s/^b/C/pg" -e "1,10s/^m/M/gp" pwd2.txt

    删除4行后面所有
    sed '5,$d' pwd2.txt

    删除从root开始,到ftp之间的行
    sed '/root/,/ftp/d' pwd2.txt

    将文件中空白字符开头的行,添加注释符
    匹配开头然后替换注释符,后面是替换空行
    sed -e 's/^[[:space:]]/#/g' -e 's/^$/#/g' test.txt

    删除文件的空白和注释行
    ;代表前一个语句结束,开始下一个语句
    sed '/^/d;/^#/d' test.txt sed -e '/^#/d' -e '/^/d' file

    给文件前三行,添加#@符号
    sed '1,3s/(^.)/#\1/g' test.txt
    1,3s替换1到3行内容
    (^.)
    ()分组 ^.匹配第一个字符放入第一个组中,后面用\1引用分组的结果
    结论:找出前三行的内容,替换第一个字符为@,即在前3行开头,添加注释符
    sed -r '1,3s/(^.)/@\1/g' test.txt

    sed取出ip地址
    多次管道符编辑(前后替换为空)
    ifconfig eth0 |sed -n '2p' | sed 's/^.inet//' | sed 's/netmask.//'

    ifconfig eth0 | sed '2s/^.inet//;s/netmask.//p' -n
    ifconfig eth0 把所有的内容取出来
    sed 2s 对第二行进行处理,然后把inet开头,netmask结尾的给替换成空

    ifconfig eth0 | sed -e '2s/^.inet//' -e 's/netmask.//p' -n

    利用分组功能,引用ip地址
    ifconfig eth0 | sed -n '2p' | sed -r 's/^.inet(.)netmask.*/\1/'

    sed支持扩展正则 -r参数
    ifconfig eth0 | sed -r -n '2s/.inet (.)netmask.*/\1/p'

    找出系统版本
    cat /etc/centos-release
    sed -r -n 's/.release[[:space:]]([^.]+).*/\1/p' /etc/centos-release

    [[:space:]]* 匹配多个空格
    [^.]+ 贪婪匹配
    sed -r -n 's/.*release[[:space:]]*([.]+)./\1/p' /etc/centos-release
    sed -r -n 's/^.
    release[[:space:]]([.0-9]+)./\1/p' /etc/centos-release

    相关文章

      网友评论

        本文标题:Linux_066_sed练习题2

        本文链接:https://www.haomeiwen.com/subject/pqsrrrtx.html