sed命令

sed命令

  流编辑器,以行为单位进行编辑;

  sed编辑文件但不改变原文件;

  sed命令有模式空间(PATTERN),文件按行的的形式传入模式空间进行处理

 1、常见选项

  -n  // 拒绝默认显示

  -r  // 指定使用拓展的正则表达式

  -e 脚本  // for while if

  -f  // 指定脚本文件

  -l  // 指定文件换行长度

  -i  // 直接修改文件内容(一般情况下不用使用)

2、地址定界方式

  21直接匹配数值

    sed -n ‘5,7p’ 文件  // 匹配57

  22 d ~ 步长

    Sed -n ‘1 ~ 3p’ 文件

  23 $ 指定行尾.代表光标所在当前行,可以用来vim的多行注释)

    Sed -n ‘10,$p’ 文件

  24 /正则/

    /pattern1/,/pattern2/   /正则1//正则2/ 第二种模式

  例:
    sed
-n '/k\{5,\}/,$p' abc     sed -n '/\(fd\)\+/,+2p' abc

 

  250addr

     addr可以是数字/$/正则表达式

例:
    sed -n '0,/k\{5,\}/p' abc

  26 addrN

     配置addr行到addr后N行

例:    
    sed -n '/fd/,+5p ' abc

3、*常见命令

  p  // print 打印 (默认在屏幕上显示出来) 建议和-n一起使用;

  i  // 在匹配行的上一行添加指定内容

    sed “/aaa/i \A” a

  a  // 在匹配行的下一行添加指定内容

    sed “/bbb/a \B” c

  c  // 替换行

    sed “/aaa/c \A” a

  d  // 删除

  n  // N 读取/添加  模式匹配到行的下一行内容,在对其进行操作

  w  // 保存文件内容到一个新的文件

  *s*  // 文本内容替换,默认替换模式空间匹配到第一项(语法格式:s/需要替换的/替换后的/)

   g  // s一起用可以全部替换

  &  // 在字符串内容中应用pattern匹配到内容

  
  练习:
    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#^/.*/\(.*\)##

 

posted @ 2019-08-19 20:58  哎呦~  阅读(90)  评论(0编辑  收藏  举报