zoukankan      html  css  js  c++  java
  • 计算机基础篇之_sed

    sed  【Stream EDitor  流编辑器】
     【行编辑器,逐行处理,把处理的结果保存在内存空间(模式空间),在内存中完成编辑,把结果输出。默认不编辑原文件,仅仅对模式空间中的数据做处理,然后处理结束后,将模式空间打印至屏幕】
    语法:
        sed  [选项] 'AddressCommand' file...
    【选项】
          -n:静默模式(不显示模式空间中的内容)
          -i:直接修改原文件
          -e:脚本1 -e 脚本2 :可以同时执行多个脚本
           -f /path/to/sed_脚本
                sed -f /path/to/scripts file
           -r: 表示使用扩展正则表达式
    【Address】
             1)起始行,结束行,$:表示最后一行
             2)/正则表达式/
             3) /模式1/,/模式2/
                :第一次被模式1匹配到的行开始----第一次被模式2匹配到的行结束,这中间的所有行
            4)指定的行
            5)开始行,+N       
               :从开始行向后的N行(N+1行)
    【命令】
            d:删除符合条件的行
            p:显示符合条件的行
            a   字符串:在指定的行后追加新行
            i     字符串:在指定的行前面添加新行
            r file :在指定文件内容添加至符合条件的行处
            w file: 在指定范围内的内容另存至指定的文件中
            s /正则表达式/字符串/[修饰符] 
                :查找并替换,模式只替换每行中第一次被模式匹配到的字符串
    [修饰符]
            -g:全局替换
            -i : 忽略字符大小写
    示例
    
    1,删除文件中1到3行
    [root@python ~]# sed '1,3d' /etc/a.txt
    2,删除包含"dev"的行
    [root@python ~]# sed '/dev/d' /etc/a.txt 
    3,删除指定行"1"行+后2行(总计3行)
    [root@python ~]# sed '1,+2d' /etc/a.txt 
    4,只删除第一行
    [root@python~]# sed '1d' /etc/a.txt
    5,删除以#号开始的行
    [root@python ~]# sed '/^#/d' /etc/a.txt
    6,仅显示有字符串"dev"的行
    [root@python ~]# sed -n '/dev/p' /etc/a.txt
    7,在所有行后面加上字符串"xxx"
    [root@python ~]# sed '1,$a xxx' /etc/a.txt
    [root@python ~]# sed '/^//a ###' /etc/a.txt 
    8,在以/前面添加新行,内容为###
    [root@python ~]# sed '/^//i ###' /etc/a.txt
    9,在文件的最后追加b.txt文件
    [root@python ~]# sed '$r /etc/b.txt' /etc/a.txt
    10,在a.txt文件中查找以"/dev"字符串的行保存至b.txt文件中
    [root@python ~]# sed '/dev/w /tmp/c.txt' /etc/a.txt 
    11,在a.txt文件中行首的/替换成#
    [root@python ~]# sed 's/^//#/g' /etc/a.txt
    [root@python ~]# sed -i 's/20/30/g' /etc/hosts
    12,&:引用模式匹配整个字符串
    [root@python ~]# cat /tmp/a.txt 
    love
    like
    [root@python ~]# sed 's@l..e@&r@g' /tmp/a.txt
    [root@python ~]# sed 's@(l..e)@1r@g' /tmp/a.txt
    lover
    liker
    [root@python ~]# sed 's@l(..e)@L1r@g' /tmp/a.txt
    Lover
    Liker
    13,删除history命令行首的空白处
    [root@python ~]# history | sed 's/^[[:space:]]//g'
    14,删除文件中行首的空白符
    [root@python sh]# sed -r 's/^[[:space:]]+//g' /etc/grub2.cfg
    15.删除文件中的空白行
    [root@python sed]# sed '/^$/d' sed.txt
    16,删除以#号开头的行
    [root@python sed]# sed 's/#//g' sed.txt 
    17.删除行首为空白字符的行
    [root@python sed]# sed -r 's/^[[:space:]]+//g' sed.txt
    18.查找父目录
    [root@python ~]# echo "/etc/rc.d" | sed -r 's#^(/.*/)[^/]+/?#1#g'
    /etc/

     THE END

    成功的背后都是汗水
  • 相关阅读:
    Gym
    数学公式头文件
    除法取模(比赛常用)
    ACM-ICPC 2017 Asia Urumqi A. Coins【期望dp】
    P1494 小Z的袜子 【普通莫队】
    Codeforces Round #642 (Div. 3) E—K-periodic Garland dp
    luogu P4568 [JLOI2011]飞行路线 最短路Dijkstra+dp
    luogu P2015 二叉苹果树 树形dp
    luogu P1462 通往奥格瑞玛的道路 二分+spfa
    luogu P1879 [USACO06NOV]Corn Fields G 状态压缩dp
  • 原文地址:https://www.cnblogs.com/xiaofu89120/p/12239301.html
Copyright © 2011-2022 走看看