sed 常见用例总结
sed 发行于1974年,作者 Lee E. McMahon。awk发行于1977年,作者 阿尔佛雷德·艾侯、彼得·温伯格以及布莱恩·柯林汉。
——源自维基百科
常见用例
文件最后追加
1
sed '$ a\00 08 * * * /sbin/clock -w >/dev/null 2>&1' /var/spool/cron/root
输出满足正则的记录
1
sed -n '/正则表达式/p' /var/spool/cron/root
删除满足正则的记录
1
sed -i '/正则表达式/d' /var/spool/cron/root
sed删除多行
1
2
3sed -i '/START/,/END/d' /etc/rsyncd.conf
eg:
sed -i '/\[root\]\s*/,/\s*hosts\s*allow\s*=\s*10.0.0.0\/8\s*192.168.0.0\/16\s*/d' rsyncd.conf将所有数字版本号统一
- sed正则中{}()需要加转义,[]则不用。
|
和+
也需要转义,$
不需要转义。
- sed正则中{}()需要加转义,[]则不用。
1 | find /data/daemon/conf/ -name "*.yaml" -type f |xargs grep -irl "version:v" |xargs sed -i 's/version:v[0-9]\{1\}/version:v9/g' |
- 将软件版本号去掉
1
rpm -qa |grep someone|sed 's/\([0-9]\|\.\|_\|-\)\+\.el.\+\(.x86_64\|.noarch\)/\2/g'
备注说明
- 有些版本的sed正则中不支持\d,小括号和加号都要加转义符
1
2eg:
rpm -qa |grep php |sed 's/-[0-9]\(.*\)\+$/-flag/g;s/^php-/php71-/g'