sed 操作命令

sed介绍

    grep 只能过滤文件内容,sed既能过滤文件内容同时还能对文件内容进行修改.  sed 算是一种编程语言,它有自己的固定语法.

    sed是一种行编辑器,sed会在内存中开辟一块独立的空间(模式空间),每次读取磁盘文件中的一行调入内存空间并且默认自动打印到屏幕

 

sed基本语法   

  1. sed  [option]   'script'  file

      script : "地址命令addresscmd"

      cmd: p   d  a  i   c  w r  = 

 

sed命令实例

  1.sed -n '/^root/p' /etc/passwd

  2.  sed -n '/^root\>/p' /etc/passwd

 

  3.   sed   -n   "1~3p"    f1

  4.   sed   -n   '2!p"        f1

  5.  sed  -r   's/(root)/admin\1/g'      /etc/passwd

  6.  sed  -r    's/(.*)/\1edu/'              /etc/passwd

  7. sed   -r    's/(.*)/edu\1/'              /etc/passwd

  8. sed -r 's*/(bin/bash)$*/s\1*'       /etc/passwd

  9.sed -r '/GRUB_CMDLINE_LINUX/s/(.*)"$/\1 XYZ"/' /etc/default/grub 或者 sed -r '/GRUB_CMDLINE_LINUX/s/"$/ xyz"/' /etc/default/grub

  10.使用正则表达式表示整行字符同时分割并且取到相应的字符串

      正则表达式  (.*inet)(.*)(netmask.*)表示包含ip地址的整行字符串

       

       把整行字符串分组分割成三个部分.可以取到任意分组中的字符串.

      

11.删除单行注释符号   找到符号用空来替代

     sed    '/^#NameVirtualHost/s/#//'          /etc/httpd/conf/httpd.conf

12.删除多行的注释符号

    sed '/^#VirtualHost/,/^<\/VirtualHost/s/#//' /etc/httpd/conf/httpd.conf

      /^#VirtualHost/         匹配到的开始行

     /^<\/VirtualHost/        匹配到的结束行

     对开始行和结束行中的所有行进行操作

13.    echo "/etc/sysconfig/network/" | sed -r 's/(.*\/)([^/]+\/?)/\2/'

         echo "/etc/sysconfig/network/" | sed -r 's/(.*\/)([^/]+\/?)/\1/'

        

 

sed的高级语法

   sed 命令包含两个操作空间

      1. 模式空间          默认只能包含一行的文本内容   相当于正在处理数据的空间

      2. 保持空间          相当于一个小仓库,用来存储暂时在模式空间中没有处理完成的数据.

 

  [root@centos7 boot]# seq 10 | sed -n 'n;p'
   2
   4
   6
   8
   10

   sed '1!G;h;$!d'  file  '1!G;  h;   $!d' 相当于通过;号把这个命令分成了3个脚本.sed读取文件的每一行文本内容依次执行这三个脚本命令.

   sed 'N;D'  file           

   [root@centos7 boot]# seq  5 | tac

    5

    4

    3

    2

    1

 

倒序内容命令

    1. ls *.rpm | rev | cut -d -f2 | rev | sort | uniq -c

     tac 把整个文件的行倒叙显示
     rev 按每行字符内容倒叙显示

  [root@centos7 ~]# seq 10 | xargs -n2
  1 2
  3 4
  5 6
  7 8
  9 10

posted @ 2018-04-19 21:06  不懂123  阅读(186)  评论(0编辑  收藏  举报