您的位置:首页 > 其它

sed的用法以及练习

2016-03-07 23:28 281 查看
sed命令:
sed是主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等的文件处理工具。
常用选项:
sed [options] 'AddressCommand' file ...
-n: 静默模式,不再默认显示模式空间中的内容,只显示被处理的行。
-i: 直接修改原文件。(慎用)
-e SCRIPT -e SCRIPT:可以同时执行多个脚本
-f /PATH/TO/SED_SCRIPT
sed -f /path/to/scripts file
-r: 表示使用扩展正则表达式
常用命令:
a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d ∶删除,因为是删除啊,所以 d 后面通常不接任何东西;
i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s ∶取代,可以直接进行取代的工作,通常这个 s 的动作可以搭配正规表示法!
1、删除/etc/grub.conf文件中行首的空白符;
sed -r 's/[[:space:]]//g' /etc/grub.conf

2、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;
sed 's@\(id:\)[0-9]\(:initdefault:\)@\15\2@g' /etc/inittab,其中\1和\2为地址空间引用;
3、删除/etc/inittab文件中的空白行;
sed '/^$/d' /etc/inittab
4、删除/etc/inittab文件中开头的#号;
sed 's/^\#//g' /etc/inittab
5、删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;
sed 's/^\#[[::space:]]+//g' /etc/inittab
6、删除某文件中以空白字符后面跟#类的行中的开头的空白字符及#
sed -r 's@^[[:space:]]+#@@g' /etc/inittab
7、取出一个文件路径的目录名称;
echo '/etc/rc.d' | sed -r 's@^(/.*/)[^/]+/?@\1@g'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  空间 file 表达式