sed:是一种行编辑器,它在处理行时会把要处理的行读入模式空间中,处理的是模式空间的内容,一行一行的处理,然后把处理结果显示在屏幕中,不对原文做修改,除非强制重定向。
好处:可同时编辑一个或多个文件,简化了对文件的反复操作。
sed用法:
格式: sed [options ]…'script' inputfile
常用选项:
-n:不把模式空间的的内容自动打印(只显示匹配行)
-e:同时编辑多个命令时使用
-f /PATH/TO/SCRIPT-FILE:从指定文件中读取编辑脚本
-r:使用扩展正则表达式
-i:对原文件进行编辑
示例:
-n选项
[root@myhost bin]# sed -n '10p' /etc/passwd 打印/etc/passwd文件中的第十行
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
-e选项
[root@myhost bin]# cat file
lksjjkfl
kjdskjlkj
kdddllkfl
[root@myhost bin]# sed -e 's/l/L/' -e 's/d/D/' file 把file文件中每行第一个l换成L,d换成D
Lksjjkfl
kjDskjLkj
kDddLlkfl
-i选项
[root@myhost bin]# sed -i '1d' file 删除file原文件中的第一行
[root@myhost bin]# cat file
kjdskjlkj
kdddllkfl
地址定界:
1、不给地址:对全文进行处理
2、单地址:
#:指定的行
/pattern/:被此处模式所能够匹配到的每一行
3、地址范围:
#,#:第几行到第几行
#,+#:从第#行开始往后+#行
/pat1/,/pat2/ :匹配模式1到模式2之间的行
#,/pat1/:从第#行开始到匹配到模式1这行之间的行
4、~:步进
1~2:奇数行步进
2~2:偶数行步进
编辑命令:
d:删除模式空间匹配到的行
p:显示模式空间中的内容
a /text:在行后面追加文本,支持\n实现多行追加
i /text:在行前面追加文本,支持\n实现多行追加
c /text:替换行为单行或多行文本
w /path/to/somefile:保存模式匹配到的行至指定文件中
r /path/to/somefile:读取指定文件的内容至模式空间中匹配到的行后
=:为模式空间中的行打印行号
!:模式空间中匹配行取反处理
重要编辑命令:
s///:查找替换,支持使用其他分隔符,如:s$$$ s### s@@@
替换标记:
g:行内全局替换
p:显示替换成功的行
w /path/to/somefile:将替换成功的行保存至文件中
i:不区分大小写
示例:
[root@myhost bin]# cat file
kjdskjlkj
kdddllkfl
[root@myhost bin]# sed '3d' file 删除file文件中的第三行
kjdskjlkj
[root@myhost bin]# sed '/^$/a\hellow' file 在file文件中空行的后面添加一行hellow
kjdskjlkj
hellow
kdddllkfl
[root@myhost bin]# sed -n '/^$/=' file 显示file文件中空行的行号
2
[root@myhost bin]# sed 's/k/&KK/' file 把fiel文件中每行的第一个k替换为kKK
kKKjdskjlkj
kKKdddllkfl
[root@myhost bin]# sed 's/k/KK&/' file 把fiel文件中每行的第一个k替换为KKk
KKkjdskjlkj
KKkdddllkfl
sed工具的高级编辑命令
h:把模式空间中的内容覆盖至保持空间中
H:把模式空间中的内容追加至保持空间中
g:从保持空间取出数据覆盖至模式空间中
G:从保持空间中取出内容追加至模式空间中
x:把模式空间中的内容与保持空间中的内容互换
n:读取匹配到的行的下一行覆盖至模式空间
N:追加匹配到的行的下一行覆盖至模式空间
d:删除模式空间中的行
D:删除当前模式空间开端至\n的内容(不再传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed
sed命令练习题:
1、删除/etc/grub2.conf文件中所有以空白开头的行行首的 空白字符 ?
2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空 白字符的行的行首的#和空白字符 ?
3、在/root/install.log每一行行首增加#号 ?
4、在/etc/fstab文件中不以#开头的行的行首增加#号 ?
5、处理/etc/fstab路径,使用sed命令取出其目录名和基名 ?
6、利用sed 取出ifconfig命令中本机的IPv4地址 ?
7、统计centos安装光盘中Package目录下的所有rpm文件的 以.分隔倒数第二个字段的重复次数
解答:
1、操作及效果
2、操作及效果
3、操作
前后效果对比
4、操作前
操作后效果
5、操作和效果
6、操作效果
7、用两种方法
原创文章,作者:ZJM,如若转载,请注明出处:http://www.178linux.com/33245