美文网首页
Linux59期day17

Linux59期day17

作者: A宽宽 | 来源:发表于2019-04-18 20:00 被阅读0次

    grep 新增参数

    grep -l(小写字母L) grep过滤的时候只显示文件名,不显示文件内容
    grep -c 统计包含XXX的一共多少行

    [root@oldboy59 ~/oldboy]# grep -c 'oldboy' oldboy.txt 
    4
    

    grep -R 递归的进行过滤

    [root@oldboy59 /oldboy]# grep -Rl 'oldboy'  /etc/  /tmp/
    /etc/group
    /etc/gshadow
    /etc/passwd
    /etc/shadow
    /etc/hostname
    

    grep -A 显示grep找出的内容及接下来的几行
    grep -B 前几行
    grep -C 上面几行后面几行

    [root@oldboy59 ~/oldboy]# grep -A 2  'linux'  oldboy.txt 
    I teach linux.
    
    I like badminton ball ,billiard ball and chinese chess!
    

    sed stream editor 流编辑器 每个文件像一个源源不断的水流(一行接一行)

    参数:
    -n 取消默认输出
    -i 修改文件内容
    -i.bak 先备份文件为oldboy.txt .bak 然后修改文件内容

    sed 命令执行过程

    https://www.processon.com/view/link/5bea32c5e4b0ad314e894f53

    功能:
    1.查p (print)
    根据行号进行查找
    [root@oldboy59 /oldboy]# sed -n '5p' lidao.txt
    105,feixue,CIO

    行号范围 查找1到5行

    [root@oldboy59 /oldboy]# sed -n '1,5p' lidao.txt
    101,oldboy,CEO
    102,zhangyao,CTO
    103,Alex,COO
    104,yy,CFO
    105,feixue,CIO
    

    使用正则进行过滤 查找有a-z的行

    [root@oldboy59 /oldboy]# sed -n '/[a-z]/p' lidao.txt 
    101,oldboy,CEO
    102,zhangyao,CTO
    103,Alex,COO
    104,yy,CFO
    105,feixue,CIO
    110,lidao,COCO
    

    找出文件中包含oldboy或yy的行

    [root@oldboy59 /oldboy]# sed -nr '/oldboy|yy/p' lidao.txt 
    101,oldboy,CEO
    104,yy,CFO
    

    使用正则表示范围,从哪行到哪行

    [root@oldboy59 /oldboy]# sed -n '/102/,/105/p' lidao.txt 
    102,zhangyao,CTO
    103,Alex,COO
    104,yy,CFO
    105,feixue,CIO
    

    2.增加
    a append 追加,在你指定的行后面追加内容
    在3行后面加上119,小红,UFO

    [root@oldboyedu59 /oldboy]# sed '3a119,xiaohong,UFO'  lidao.txt 
    101,oldboy,CEO
    102,zhangyao,CTO
    102,zhangyao,CTO
    119,xiaohong,UFO
    103,Alex,COO
    104,yy,CFO
    105,feixue,CIO
    105,feixue,CIO
    110,lidao,COCO
    

    i insert 插入 在你指定的行上面插入信息
    c replace 把这一行的内容先清空 然后写入

    3.删除 d delete

    删除空行

    [root@oldboy59 ~/oldboy]# sed  '/^$/d' oldboy.txt
     am oldboy teacher!
    I teach linux.
    I like badminton ball ,billiard ball and chinese chess!
    my blog is http://oldboy.blog.51cto.com 
    our size is http://blog.oldboyedu.com 
    my qq is 49000448
    not 4900000448.
    my god ,i am not oldbey,but OLDBOY! 
    

    不显示空行

    [root@oldboy59 ~/oldboy]# sed -n '/^$/!p' oldboy.txt
     am oldboy teacher!
    I teach linux.
    I like badminton ball ,billiard ball and chinese chess!
    my blog is http://oldboy.blog.51cto.com 
    our size is http://blog.oldboyedu.com 
    my qq is 49000448
    not 4900000448.
    my god ,i am not oldbey,but OLDBOY!
    

    删除 /oldboy/oldboy.txt中的空行

    sed和grep都可以实现

    sed命令格式和功能-2019-v2

    https://www.processon.com/view/link/5cb7ede9e4b01941c8b13036

    4.修改 s sub 格式s#目标#替换为什么#g s替换 g全局替换 sed命令默认替换每一行第一个内容(第一个匹配到的)如果有g则进行全局替换,替换每一行中匹配到的内容

    [root@oldboy59 ~/oldboy]# sed 's#oldboy#alex#g' oldboy.txt 
     am alex teacher!
    I teach linux.
    
    I like badminton ball ,billiard ball and chinese chess!
    my blog is http://alex.blog.51cto.com 
    our size is http://blog.alexedu.com 
    my qq is 49000448
    
    not 4900000448.
    my god ,i am not oldbey,but OLDBOY! 
    

    后向引用

    在前面(##)把你要的内容保护起来,在后两个##之间通过\数字来引用
    把123456修改为<123456>

    [root@oldboy59 ~/oldboy]# echo 123456 |sed -r 's#(.*)#<\1>#g'
    <123456>
    

    不显示文件/etc/ssh/sshd_config 的空行或以#号开头的行

    sed和grep实现
    awk

    相关文章

      网友评论

          本文标题:Linux59期day17

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