sed使用详解
大纲:
1、 sed是什么
2、 为什么要使用sed
3、 sed使用方法
4、 sed详解
正题:
1、 sed是什么
sed全名Stream Editor,是Linux下一条命令,也是文本处理三剑客之一的流编辑器,主要对行进行处理。
2、 为什么要使用sed
sed功能强大,使用灵活,而且支持正则表达式,不仅可对数据进行删除、替换、修改、插入,而且可以通过地址定界来对范围内的行进行编辑,大大提高了工作效能,省去手工操作的繁琐与失误率。
3、 sed使用方法
sed 主要由四部分组成:命令主体、选项、处理方式、待处理的文件,使用格式为:
sed [OPTIONS] ‘SCRIPT’
FILE
4、 sed详解
sed命令的使用格式:
sed [OPTION] ‘SCRIPT’
FILE
OPTION:
-n:不输出模式空间中未被匹配和默认输出的内容至屏幕(只输出匹配的内容)
-e
script:实现多点编辑,即可增加多个’script’ 例如:
sed -n -e ‘/etc/s/fstab/FSTAB/’ -e ‘1~2p’ /etc/fstab
-f
/PATH/SED_CRRIPT_FILE:从其他文件中读取编辑命令,即读取script
注:写有script的文件中不需要单引号,直接写script。
-r:支持使用扩展表达式:默认只能用基本正则,使用-r后可以用扩展正则。
-i:直接编辑原文件,慎用。
‘SCRIPT’:
SCRIPT由两部分组成,地址定界+编辑命令;
地址定界:主要来判定处理的行范围,默认为全部
(1) 空地址:对全文进行处理
(2) 单地址:
#:指定行
/pattern/:被此模式所匹配到的每一行;
(3) 地址范围:
#, # : 从指定的行数到指定的行数;
#, +# : 从指定的行数到几行之后;
#, /parttern/ : 从指定的行数到匹配到此模式的行;
/parttern1/, /parttern2/ : 从匹配到1的模式的行到匹配到2的模式的行;
(4) 步进:
x~y:设x为起点,每次向前移动y步;
例如:
1~2 : 所有的奇数行;
2~2 : 所有的偶数行;
编辑命令:主要作用是针对匹配到的数据该如何处理;
文本的删除和显示:
d:删除(行),主要针对行的删除;
p:显示模式空间的内容,如果不加选项-n,匹配到模式空间的内容会重复显示;
文本的添加和替换:
a
\text: 在指定或匹配行后面追加文本“text”,
支持使用\n实现多行追加
i \text: 在指定或匹配行前追加文本“text”,支持使用\n实现多行追加;
c \text: 将指定或匹配的行替换为“text”,
s/// : 查找替换(行内编辑),支持基本正则表达式,可将查找出来的数据段替换、更改、删除,其分隔符可自行设定,常用有:s@@@, s###;
g:全局替换;默认只会替换匹配到的第一段数据;
w: /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
p:显示替换成功的行;
注:使用方法同vim中命令模式中的查找替换。
文本的导入与导出:
w
/PATH/TO/SOMEFILE : 保存模式空间匹配到的行到指定文件中;
r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
其他:
=:为模式匹配到的行打印行号;
!:条件取反,使用方法是在编辑命令前,没有空格:
sed
‘1~3!p’ /etc/fstab
综合实战:
以上是sed各参数的详细说明,只用通过各种案例才能将sed命令牢牢掌握,以下是一些常用的使用方式:
1、删除/boot/grub2/grub.cfg文件中所有以#开头的行的行首的所有#号与空白字符;
2、删除/etc/fstab/文件中的偶数行,并且在没有#号的奇数行首加#;
3、输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname;
echo /etc/httpd/conf/
|sed ‘s@[^/]\+/*$@@’
/etc/httpd/
4、 将nologin 的用户信息导出至 /root/nologin.txt
5、 将/etc/fstab中所有以#开头的行更改为#magedu.com
原创文章,作者:N25_韩奇洋,如若转载,请注明出处:http://www.178linux.com/70097
评论列表(1条)
赞~~思路比较清晰~后面操作的部分建议使用markdown来展示会更好~~加油