美文网首页
sed命令使用(2)

sed命令使用(2)

作者: 冰舞one | 来源:发表于2018-12-09 09:13 被阅读0次

    1、sed 命令的后项要引用取IP

    [root@localhost scripts]# ifconfig enp0s3|grep 'inet '|sed -r 's#.*inet (.*) netmask.*$#\1#g'

    192.168.0.3

    [root@localhost scripts]#

    [root@localhost scripts]# ifconfig enp0s3

    enp0s3: flags=4163  mtu 1500

            inet192.168.0.3netmask 255.255.255.0  broadcast 192.168.0.255

    .*inet  (.*)    \1               netmask.*$

        sed -r 's#.*inet (.*) netmask.*$#\1#g;上述颜色相同的代表内容统一;(.*)括号的内容就是选定的内容用 \1表示;若有两个从左向右的方向排序\1 \2……

    -r 支持正则表达式

    2、sed 查找内容并执行命令

    查找/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行:

    [root@localhost scripts]# sed -n '/root/{s/bash/blueshell/;p}' /etc/passwd

    root:x:0:0:root:/root:/bin/blueshell

    operator:x:11:0:operator:/root:/sbin/nologin

    [root@localhost scripts]#

    3、sed 命令打印行

    [root@localhost scripts]# sed   "=" color.sh

    1

    #!/bin/sh

    2

    RED_COLOR='\E[1;31m'

    3

    GREEN_COLOR='\E[1;32m'

    4

    YELLOW_COLOR='\E[1;33m'

    5

    4、sed 修改文件加备份加

    -i:后跟备份成的文件名;注意:如果sed 跟多个参数进行文件备份 -i必须放到参数位的最后如果放到前面文件会备份成这样:

    [root@localhost scripts]# sed -ir.2016.bak 's#^sed#s1#g' b.log #失败的案例 

    [root@localhost scripts]# ls

    b.log       b.logr.2016.bak

    [root@localhost scripts]# cat b.log.2018.bak

    11

    root@localhost scripts]# sed -i.2018.bak 's#11#sedcmd#g' b.log

    [root@localhost scripts]# ls b.*

    b.log  b.log.2018.bak

    [root@localhost scripts]# cat b.log.2018.bak

    11

    [root@localhost scripts]# cat b.log

    sedcmd

    相关文章

      网友评论

          本文标题:sed命令使用(2)

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