一:sed工具
1,set的介绍:sed是一种流编辑器,它一次处理一行内容。处理时,把当前 处理的行存储在临时缓冲区中,称为“模式空间”(pattern
space),接着用sed命令处理缓冲区中的内容,处理完成后
,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循
环。如果没有使诸如‘D’的特殊命令,那会在两个循环之间
清空模式空间,但不会清空保留空间。这样不断重复,直到
文件末尾。文件内容并没有改变,除非你使用重定向存储输
出。
它的功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。
2,sed的用法:
sed | -n | 不输出模式空间内容到屏幕,既不自动打印 |
-e | 多点编辑,对每行处理时,可以有多个script | |
-f | 把script写到文件中,在执行sed时-f指定文件路径,如果是多个script,换行写 | |
-r |
支持正则表达式 |
|
-i | 直接将处理的结果写入文件 | |
-i 文件名 | 在将处理结果写入文件之前备份一份 |
script
地址的定界:
(1)不给地址,对全文进行处理
sed -n ‘p’ 文件
(2)单地址:
#:指定行
sed -n ‘2p’ 文件: 指定文件的第二行内容
/pattern/:被此处模式所能够匹配到的每一行
sed -n ‘/nihao/p’ 文件:显示文件中匹配到带有nihao的一行
(3) 地址范围:
#,#
sed -n ‘1,5p’ 文件:显示文件中一到五行的信息
#,#+
sed -n ‘1,+2p’ 文件:显示文件中第一行和第三行的信息
/part1/,/part2/
sed -n ‘/n/,/m/’ 文件 :显示文件中第n到m行的信息
(4)~表示步进
sed -n ‘1~2p’ 只显示奇数行
sed -n ‘2~2p’ 只显示偶数行
编辑的命令:
d:删除模式空间匹配到的行,并立即启用下一轮循环
sed ‘2d’ 文件名 :删除文件中第二行的内容
p:打印当前模式空间内容,追加到默认输出之后
a[\]txt :在指定行后面追加文本,可以使用\n实现多行追加
i[\]txt :在行前面插入文本
c[\]txt : 替换行为单位或多行文本
w /path/文件:保存模式匹配到的行至指定文件
r /path/文件 :读取指定文件的文本到模式空间中匹配到的行后
相关示例:
1、删除centos7系统/etc/grub2.cfg文件中所有以空白开头
的行行首的空白字符
2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空
白字符的行的行首的#和空白字符
3、处理/etc/fstab路径,使用sed命令取出其目录名和基名
4、利用sed 取出ifconfig命令中本机的IPv4地址
5、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数
6、统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和sed两种方法分别实现)
第二种方法:
原创文章,作者:风之轨迹,如若转载,请注明出处:http://www.178linux.com/85418