码迷,mamicode.com
首页 > 系统相关 > 详细

linux中sed命令

时间:2015-08-25 17:11:50      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

sed基本用法:

    sed: Stream Editor  行编辑器,同vi编辑器不一样的是,vi编辑器是全屏编辑器。

sed:模式空间

    默认不编辑原文件,仅对模式空间中的数据做处理;而后,处理结束后,将模式空间打印至屏幕;


sed [options] ‘AddressCommand‘ file...

-n:静默模式,不在默认显示模式空间中的内容

-i:直接修改原始文件

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

-f  /PATH/TO/SED_SCRIPT   

    sed -f /path/to/scripts file

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

关于Address的说明:

  1. StartLine,EndLine     比如1,100  $:最后一行

  2. /RegExp/      /^root/

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

  4. lineNumber:指定的行

  5. StartLine,+N   从startline开始,向后的N行。

关于Command的说明:

d: 删除符合条件的行

p: 显示符合条件的行

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

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

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

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

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

加修饰符:  g:全局替换      i:忽略字符大小写

其实  s///,s###,s@@@都是一样的,    \(\) ,\1,\2

&:引用模式匹配整个串。

练习:

  1. 删除/etc/grub.conf文件中行首的空白符

    sed -r     ‘s/^[[:space:]]+//g‘ /etc/grub.conf

  2. 替换/etc/inittab文件中“id:3:initdefault:”一行中的数字为5

    sed -r   ‘s#^\(id:\):[[:digit:]]\(:initdefault:\)#\15\2#g‘

  3. 删除/etc/inittab文件中的空白行

    sed -r  ‘/^$/d‘ /etc/inittab

  4. 删除/etc/inittab文件中开头的#号

    sed -r ‘s/^#//g‘ /etc/inittab

  5. 删除某文件(/etc/inittab)中开头的#号及后面的空白字符,但要求#号后面必须有空白字符

    sed -r ‘s/^#[[:space:]]+//g‘ /etc/inittab

  6. 取出一个文件路径的目录名称

    sed -r ‘s@^(/.*/)[^/]+/?@\1@g‘

  7. 取出一个文件路径的文件名称

    sed -r ‘s@^/.*/([^/]+)/?@\1@g‘

linux中sed命令

标签:

原文地址:http://my.oschina.net/alfredliukai/blog/496911

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!