shell脚本学习笔记之sed命令用法





sed基本用法

sed:stream editor

     行编辑器



sed:模式空间 将匹配的文本内容储存到模式空间中

默认不编辑原文件,仅对模式空间中的数据做处理,而后,处理结束后,架构模式空间的内容显示

sed 

   -n 

   -i:直接修改原文件

   -e script -e script:可以同时执行多个脚本

   -f file

   sed -f /scripts  file

   -r:表示使用扩展正则表达式


sed ‘adresscommand’ file。。。

     -n:静默模式,不再默认显示模式空间中的内容,即只显示符合sed命令的内容


address

1.起始行,结束行

  如1,100  表示1到100行


2./pattern/   正则表达式

    

3./pattern1/,/pattern2/

  第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行


4.LineNunber

  指定的行



5.startine,+n

 从startline开始,向后的n行:

 

command:

  d:表示删除符合条件的行

  ’1,2d‘   删除第一,二行

  ’/pattern/d'  删除含有pattern的行

    '2,+2d'    删除第二以及后面的两行

    


 p:显示符合条件的行

  '/^\//p' 显示以/为行首的行


 a \string:在指定的行后面追加新行,内容为'string'

  如  '/^\//a \# hello world'  在以/行开头的行后面加#hello world

    \n:可以用于换行


 i \string: 在指定的行前面添加新行,内容为string


 r file:将指定的文件内容添加至符合添加的行处

      sed ‘2r /etc/issue' /etc/fstab 将文件issue 插入到fstab第二行后面

        

 w file:将地址指定的范围内的行另存至指定的文件中

      sed '/oot/w /tmp/oot.txt' /etc/fstab 将/etc/fstab中含有oot的行保存至文件oot.txt中



 s/pattern/string:查找并替换,默认只替换每行中第一次被模式匹配到的字符串

      sed 's/oot/OOT/' /etc/fstab  将fstab 文件中的oot替换为OOT

           s/^\//#/'  


 加修饰符

   g:全局替换

   sed 's/oot\//#/g' /etc/fstab  将所有的/替换为#

   i:忽略字符大小写

     pattern/i,


s///:s###,s@@@

  sed 's@/@#@g' /etc/fstab  用@将/替换为#

可以这样理解,首先将/=@,然后又将@=#,于是就等于将/=#


\(\),\1,\2


l..e

like--liker

love--lover

 

sed 's#l..e#&r#g' sed.txt


sed  's#\(l..e\)#\1r#g' sed.txt


like--Like

love--Love


sed 's#l\(..e\)#L\1#g' sed.txt

& 匹配模式运用到的整个


history | sed 's#^[[:space]]##g' 

将数字前面的空格去为空