sed进阶详解

sed 行编辑器 用法详解
  -n 不输出到屏幕
  -e 多点编辑
  -f  file   从指定文件中读取编辑脚本
  -r  支持使用拓展的正则表达式
  -i  替换原文件

  地址界定
    (1)不给地址默认全文处理
    (2)单地址
      # 指定的行
     /pattern/  被此处模式所能匹配到的每一行
    (3)地址范围
    #,#
    #,+#
    #,/pat1/
    /pat1/,/pat2/
    (4)~ 步进
    1~2  从第一行开始,每隔两个显示
    2~2  从第二行开始,每隔两个显示
    sed -n '1~2p'  file  显示奇数行
    sed -n '2~2p'  file  显示偶数行    

例如     
sed '/^UUID/d'  /etc/fstab   删除所有UUID开头的行

但是并不会写入到文件里  除非你>/etc/fstab  这个只是输出文本而已,类似于过滤

编辑命令
    d 删除  
    sed    '/^UUID/d' /etc/fstab
    
    p显示模式空间中的内容  一般一行会显示两次
    sed  -n  '/^UUID/p' /etc/fstab  就不会显示两遍了
    
    a \'text'   
    例如 sed '/^UUID/a \# hello'  /etc/fstab 
    就会在每行后面再加一行
    如果  '/^UUID/a \# hello.\n# welcom' 就会追加两行
    
    i \'text'  是在前面插入  a在行后面加入
    
    c \text 替换行位单行或多行文本
    '/^UUID/c \# hello.\n# welcom'
    
    w
    sed  '/^UUID/w  /tmp/fstab'  /etc/fstab
    保存到指定文件
    
    =  显示符合条件的行所在的行号

    r
    sed '6r /etc/passwd'  /etc/fstab
    将passwd 写到fstab的第六行后面


    !  取反条件
    sed    '/^UUID/!d' /etc/fstab


    s/查找条件/替换的内容/  支持使用其他分隔符(s@@@ s###)
    sed 's@^UUID@uuid@'  /etc/fstab    
    sed 's/^UUID/uuid/'  /etc/fstab    

    sed 's@r..t@&er/g'  /etc/passwd 
    将root-->rooter

    \+ 至少出现一次
    sed  's@^[[:space:]]\+@@'  /etc/grub2.cfg


    echo '/etc/sysconfig/' |sed 's@[^/]\+/\?$@@'

    替换标记:g全行替换;
    p显示替换成功的行;
    w /to/sfile 将替换成功的行保存到指定文件里、


模式空间:编辑操作的空间,如果暂时不用可以放到保持空间,之后再取出
保持空间:理解为仓库


高级编辑命令:
    h:把模式空间中的内容覆盖到保持空间中
    H:把模式空间中的内容追加到保持空间中
    g:从保持空间中取出数据覆盖至模式空间
    G:从保持空间取出内容追加至模式空间
    x:把模式空间中的内容和保持空间中的内容进行互换
    n:读取匹配到的行的下一行至模式空间
    N:追加匹配到的行的下一行至模式空间
    d:删除模式空间中的行
    D:删除多行模式空间中的所有行
    
    例子:
    sed -n 'n;p'  FILE  只会显示偶数行
    sed '1!G;h;$!d'  FILE
    第一行除外,从保持空间取出内容追加至模式空间;把模式空间中的内容覆盖到保持空间中;$!除了最后一行,删除模式空间中的行
    效果就是倒序:逆向显示文件内容

    sed '$!N;$!D' FILE 取文件后两行
    
    sed '$!d' 取最后一行

    sed 'G' FILE  每行后面加一空白行      
    
    sed 'g'  FILE  全部替换为空白行

    sed '/^$/d;G' FILE  在每个文件后面加入空白行;如果有多个空白行合并为一个
    sed 'n;d'  FILE  显示奇数行

    sed -n '1!G;h;$p'  FILE   倒序显示文件内容
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值