概述
sed是一种流编编器,它是文本处理中非常中的工具,能够完美的配合正则表达式便用,功物能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为”模式空间”( oattern space),接看用sed命令处理缓冲区中的内容,处理成后,把缓冲区的内容送往屏幕显示。
接着理下一行,这样不断重复,直到文件末。文件内容没有改改变,除非使用了写入的命令,将内容更新。定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。
一、sed语法
sed 命令的基本格式如下:
sed [选项] [脚本命令] 文件名
该命令常用的选项及含义,如表 1 所示。
![a020070564f68d896c89b4e5a6f1a515.png](https://i-blog.csdnimg.cn/blog_migrate/f49af4b2f574fe67c926e173193896d2.jpeg)
成功使用 sed 命令的关键在于掌握各式各样的脚本命令及格式,它能帮你定制编辑文件的规则。
二、sed脚本命令
sed s 替换脚本命令此命令的基本格式为:
[address]s/pattern/replacement/flags
其中,address 表示指定要操作的具体行,pattern 指的是需要替换的内容,replacement 指的是要替换的新内容。
关于指定具体操作行(address)的用法,这里先不做解释,文章后续会对其做详细介绍。
此命令中常用的 flags 标记如表 2 所示。
![e70185d35bcce3a19c6abed8cd6fcd24.png](https://i-blog.csdnimg.cn/blog_migrate/27d29f9ef9a76b744681a6fb6456c82c.jpeg)
三、实例演示
1、只打印第三行
sed -n '3p' /var/log/yum.log
![11fb4aa4c1f3595fb234b08146ba22ab.png](https://i-blog.csdnimg.cn/blog_migrate/92338aea34261c8c802c773fd8560d78.jpeg)
2、只查看文件的第3行到第9行
sed -n '3,9p' /var/log/yum.log
![bdd83641b1605bd1333ac09384fddd4a.png](https://i-blog.csdnimg.cn/blog_migrate/6d85212d9d6bb5e9edf0f50212c777f8.jpeg)
3、过滤特定字符串,显示正行内容
sed -n '/perl/p' /var/log/yum.log
![961d83ed6fdd83eefba00440d255da67.png](https://i-blog.csdnimg.cn/blog_migrate/61da6b9c582f33cb3bd1ba7f9d196a6e.jpeg)
4、打印1-5行,并显示行号
sed -n -e '1,5p' -e '=' /var/log/yum.log
![9d30ea32c93040fe4d0bf0b8c64b0ef6.png](https://i-blog.csdnimg.cn/blog_migrate/53c302ff28b5dd5dd931a0ae23eababa.jpeg)
5、替换
sed 's/disabled/enforcing/g' /etc/selinux/config sed -i 's/disabled/enforcing/g' /etc/selinux/config
![89c2c7e5054a5368f4ed49f24282d707.png](https://i-blog.csdnimg.cn/blog_migrate/0845a87e0ba2ad326abd6cd7856272a4.jpeg)
6、正则匹配IP和子网掩码
ifconfig |sed -n '2p'ifconfig |sed -n '2p' | sed -r 's#.*r:(.*) B.*k:(.*)#1 2#g' --(.*)表示匹配的项,之后可以用1取出第一个括号内匹配的内容,2取出第二个括号内匹配的内容
![7341bea810ed729445aed6f12b02a280.png](https://i-blog.csdnimg.cn/blog_migrate/cc2cacb3988ebf5c9cfe57782111ce46.jpeg)
7、sed错误使用
sed 's#,# #h' xx.txt | cut -d" " -f 3,5 xx.txt 正确的用法
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
![49717b2abb38d16eda3aa97d102ba248.gif](https://i-blog.csdnimg.cn/blog_migrate/04966035b5e0a63545e463957753c485.gif)