默认不编辑源文件,仅对模式空间中的数据做处理,处理结束后,将模式空间打印至屏幕
sed基本用法:
sed 选项 匹配模式 文件名
-n 静默模式,不再显示模式空间里的内容
-i 直接修改源文件
-e 脚本 -e 脚本……:可以同时执行多个脚本
-r 表示使用扩展表达式
-f /PATH/TO/SED_SCRIPT
sed -f /path/to/scripts file
匹配模式:
1、起始行,结束行
1,100 从第一行到一百行
$ 最后一行
例:sed -n '1,4p' /etc/passwd 显示passwd的1到4行的内容
2、/正则表达式/
/^root/ 所有以root开头的行
例:sed -n /^root/p /etc/passwd 显示passwd中已root开头的行
3、/模式一/,/模式二/ 第一次被模式1匹配到的行开始到第一次被模式二匹配到的行结束
例:sed -n /^root/,/^ftp/p /etc/passwd 显示passwd中以root开头的行到以ftp开头的行之间的所有行
4、指定的行
例: sed -n 5p /etc/passwd 显示passwd中的第5行
5、startline,+N 从startline开始,向后的N行
例:sed -n /^ftp/,+2p /etc/passwd 显示passwd中以ftp开头的行及其下2行
匹配模式:
d: 删除符合条件的行
p: 显示符合条件的行
a \字符串 在指定的行后面追加新行,内容为字符串
\n 可以换行
i \字符串 在指定的行前面追加新行,内容为字符串
r 路径 将指定的文件的内容添加至符合条件的行处
w 路径 将指定的范围内的行另存至指定的文件中
s /字符串(可以用正则表达式)/字符串/修饰符 查找并替换,默认只替换每行中第一次被模式匹配到的字符串
g 全局替换
i 忽略字符大小写
& 引用模式匹配整个串
例:sed -n s/^root/123/p /etc/passwd 显示passwd中开头是root的行并把开头的root替换为123
s///: s###, s@@@
\(\), \1, \2