sed 操作命令

Posted 不懂123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于sed 操作命令的主要内容,如果未能解决你的问题,请参考以下文章

sed 操作命令

sed命令在文件中替换、插入

linux之文本内容替换命令sed

sed 命令操作

linux零基础学习之Linux sed 命令常用操作详解

linux sed命令详解