zoukankan      html  css  js  c++  java
  • 9.4/9.5 sed

    sed打印某行

    sed命令的格式为:sed -n 'n'p filename,单引号内的n是一个数字,表示第几行。-n选项的作用是只显示要打印的行

    [root@lizhipeng01 ~]# mkdir sed
    [root@lizhipeng01 ~]# cd sed
    [root@pantinglinux]# cp ../grep/passwd test.txt

    [root@pantinglinux]# sed -n '/root/'p test.txt
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin

    [root@pantinglinux]# sed -nr '/r+t/'p test.txt         加上n不用脱意

    [root@pantinglinux]# sed -nr '/o+t/'p test.txt
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin

    [root@pantinglinux]# sed -nr '/o{2}/'p test.txt    匹配2次o
    root:x:0:0:root:/root:/bin/bash
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin

    [root@pantinglinux]# sed -nr '/root|bus/'p test.txt      匹配root或者bus
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin

    [root@pantinglinux]# sed -n '2'p test.txt          打印第2行
    bin:x:1:1:bin:/bin:/sbin/nologin

    [root@pantinglinux]# sed -n '2,5'p test.txt       2到5行
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

    [root@pantinglinux]# sed -n '1,$'p test.txt     从头到尾

    sed命令加上-e选项可以实现多个行为

    [root@pantinglinux]# sed -e '1'p -e '/bus/'p -n test.txt    先打印第一行,再打印匹配bus的行
    root:x:0:0:root:/root:/bin/bash
    dbus:x:81:81:System message bus:/:/sbin/nologin

    [root@pantinglinux]# sed -e '1'p -e '/root/'p -n test.txt
    root:x:0:0:root:/root:/bin/bash
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin

    [root@pantinglinux]# sed -n '/bus/'Ip test.txt    I忽略大小写,grep -i
    222222222.r.olo:ddedBUs
    dbus:x:81:81:System message bus:/:/sbin/nologin

    删除某些行

    [root@pantinglinux]# sed '1,20'd test.txt     删除1到20行,并没有对test.txt文件做修改,只是不显示1到20行
    lizhipeng:x:1000:1000::/home/lizhipeng:/bin/bash
    user1:x:1001:1001::/home/user1:/bin/bash
    lzp:x:1002:1003::/home/lzp:/bin/bash
    user2:x:1003:1006::/home/user2:/bin/bash
    user3:x:1004:1005::/home/user3:/bin/bash
    user4:x:1006:1005::/home/lizhipeng001:/sbin/nologin
    user5:x:1007:1007::/home/user5:/bin/bash

    [root@pantinglinux]# wc -l test.txt
    27 test.txt

    [root@pantinglinux]# cp test.txt test.txt.bak      备份
    [root@pantinglinux]# sed -i '1,20'd test.txt      -i ,删除第1到20行,对文件本身有影响
    [root@pantinglinux]# wc -l test.txt
    7 test.txt

    [root@pantinglinux]# sed -i '/user2/'d test.txt      删除user2
    [root@pantinglinux]# cat test.txt
    lizhipeng:x:1000:1000::/home/lizhipeng:/bin/bash
    user1:x:1001:1001::/home/user1:/bin/bash
    lzp:x:1002:1003::/home/lzp:/bin/bash
    user3:x:1004:1005::/home/user3:/bin/bash
    user4:x:1006:1005::/home/lizhipeng001:/sbin/nologin
    user5:x:1007:1007::/home/user5:/bin/bash

    [root@pantinglinux]# cp test.txt.bak test.txt
    cp:是否覆盖"test.txt"? y
    [root@pantinglinux]# sed '1,10s/root/toor/g' test.txt      查找替换,1到10行,root替换为toor,对文件本身没有影响
    toor:x:0:0:toor:/toor:/bin/bash

    [root@pantinglinux]# sed -r '1,10s/ro+/r/g' test.txt |head
    rt:x:0:0:rt:/rt:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/rt:/sbin/nologin

    [root@pantinglinux]# head test.txt |sed -r 's/([^:]+):(.*):([^:]+)/3:2:1/'
    /bin/bash:x:0:0:root:/root:root
    /sbin/nologin:x:1:1:bin:/bin:bin
    /sbin/nologin:x:2:2:daemon:/sbin:daemon
    /sbin/nologin:x:3:4:adm:/var/adm:adm
    /sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
    /bin/sync:x:5:0:sync:/sbin:sync
    /sbin/shutdown:x:6:0:shutdown:/sbin:shutdown
    /sbin/halt:x:7:0:halt:/sbin:halt
    /sbin/nologin:x:8:12:mail:/var/spool/mail:mail
    /sbin/nologin:x:11:0:operator:/root:operator

    [root@pantinglinux]# head test.txt |sed 's/[a-zA-Z]//g'
    ::0:0::/://
    ::1:1::/://
    ::2:2::/://
    ::3:4:://://
    ::4:7::///://
    ::5:0::/://
    ::6:0::/://
    ::7:0::/://
    ::8:12::///://
    ::11:0::/://

    [root@pantinglinux]# head test.txt |sed -r 's/(.*)/aaa:&/'    在所有行之前添加aaa:
    aaa:root:x:0:0:root:/root:/bin/bash
    aaa:bin:x:1:1:bin:/bin:/sbin/nologin
    aaa:daemon:x:2:2:daemon:/sbin:/sbin/nologin
    aaa:adm:x:3:4:adm:/var/adm:/sbin/nologin
    aaa:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    aaa:sync:x:5:0:sync:/sbin:/bin/sync
    aaa:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    aaa:halt:x:7:0:halt:/sbin:/sbin/halt
    aaa:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    aaa:operator:x:11:0:operator:/root:/sbin/nologin

  • 相关阅读:
    在Bootstrap开发框架基础上增加WebApi+Vue&Element的前端
    使用Vue-TreeSelect组件的时候,用watch变量方式解决弹出编辑对话框界面无法触发更新的问题
    使用Vue-TreeSelect组件实现公司-部门-人员级联下拉列表的处理
    利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
    利用过滤器Filter和特性Attribute实现对Web API返回结果的封装和统一异常处理
    使用代码生成工具快速开发ABP框架项目
    基于ABP框架的SignalR,使用Winform程序进行功能测试
    使用egg.js开发后端API接口系统
    小样本学习领域的几篇优秀文章解读——都是度量学习
    用于对机器学习模型进行对抗性攻击、防御和基准测试的Python库:CleverHans 3.0.0
  • 原文地址:https://www.cnblogs.com/pta188/p/8952451.html
Copyright © 2011-2022 走看看