zoukankan      html  css  js  c++  java
  • 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#^/.*/(.*)##

  • 相关阅读:
    poj 2728 Desert King
    uva 439 Knight Moves
    hdu 1875 畅通工程再续
    scau实验题 8600 骑士周游问题(有障碍物)
    scau实验题 8596 Longest Ordered Subsequence
    poj 1679 The Unique MST
    uva 527 Oil Deposits
    poj 2533 Longest Ordered Subsequence
    .net 程序员 java 开发入门
    Collation conflict occur at operation on User define funtion & table's column
  • 原文地址:https://www.cnblogs.com/hmm01031007/p/11390805.html
Copyright © 2011-2022 走看看