• shell脚本-sed命令


    sed命令--流编辑器

    1.工作原理

      指定一个文本文件,依次读取文本文件中每一行的内容,读取到模式空间(pattern space)中,在模式空间中进行文本匹配(使用正则表达式),对匹配后的内容进行修改(替换、删除、打印、修改和保存)

    2.常见选项

      -r 指定使用扩展正则表达式
        -n 禁止自动打印到空间模式
        -e 接脚本语句
        -f 指定脚本文件
        -l 指定文本换行的长度
        -i 直接修改文件内容(需要慎重使用) 

    3.地址定界

    (1)直接匹配数值
         示例:sed -n '5p' 文件名        #打印文件中内容的第五行
    (2)d~ 步长       
         示例:sed -n '1~3p' 文件名    #打印文件中内容从第1行开始以3为步长打印,就是打印第1,4,7,11.....行

      扩展:sed -n '1p;3p' 文件名   #打印文件内容中的第一行和第三行

    (3)$  指定行尾
         示例:sed -n '10,$p' 文件名     #打印文件内容从第10行到最后一行
    (4)/正则/
        /正则1/,/正则2/
        示例:sed -n '/k{5,}/,$p' 文件名  #打印文件中匹配k这个字符至少5次的字符并输出

    (5)0,addr
       addr 可以为 数字/$/正则表达式
       示例:sed -n '0,/k{5,}/p' abc    

    (6)addr,+N    
        配置addr行到,addr后N行
        示例:sed -n '/fd/,+5p' abc
    4.常见命令

     p  print 打印(默认在屏幕上显示出来)建议和-n一起使用
        i   在匹配的上一行去添加指定内容
            示例:sed"/aaa/iabc" 文件
       a  在匹配行的下一行指定添加内容
           示例:sed"/aaa/aabc" 文件    
       c 替换行
          示例:sed "/aaaa/c A"文件
       d 删除
          示例:sed "/aaa/d" 文件
                     sed "1,3d" 文件
      n 读取/N添加 模式匹配到的行的下一行内容,在对其进行操作
      w 保存文件内容到一个新的文件
         示例:sed "/pattren/w 新文件" 原来文件
                   sed "/k/w /tmp/pattern" abc
      s 文本内容替换,默认替换模式空间匹配到的第一项
         语法格式:s/pattern/字符串/
         中间/可以替换为任意一个特殊字符,例如:s###s%%%
         g---行内全局替换
         12 和正则表达式分组相同,实现反向应用;指定某一个匹配项进行修改替换
         &---调用前面(pattern)匹配的内容
         示例:sed "s/r..t/&er/g" 文件

    5.练习

       (1)删除/boot/grub/grub.conf文件中所有空白开头的行行首的空白字符;
            sed 's/^[[:space:]]+//g' /boot/grub/grub.conf 

       (2) 删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行   的行首的#和空白字符;
            sed 's/^#[[:space:]]+//g' /etc/fstab

       (3)给定一个目录,取出其目录名
            echo "/etc/passwd"  |  sed 's/[^/]+$//'

       (4)给定一个目录,取出其文件名
            echo "/etc/passwd" | sed 's#^/.*/(.*)##

  • 相关阅读:
    Spring MVC @PathVaribale注解
    Android XML解析并将数据存放在数据库中
    Android平台SoundPool 和 MediaPlayer
    Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
    程序员必备的七大面向对象设计原则(二)
    Android setRequestedOrientation用法
    Linux系统IP路由基础[第1部分]
    Android中解析XML
    Android学习笔记(6)————Android的线程与进程
    Eclipse最全快捷键
  • 原文地址:https://www.cnblogs.com/hmm01031007/p/11390805.html
Copyright © 2020-2023  润新知