sed基本用法:
sed:Stream EDitor 流编辑器
行编辑器 每次读取文本的一行到内存空间,这段空间叫做模式空间。默认不编辑原文件,仅对模式空间中的数据做处理,完成后,将模式空间中的内容显示出来。
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
-n 静默模式,不默认显示模式空间中的内容
-i 直接修改原文件
-e SCRIPT 可同时执行多个脚本
-f /PATH/TO/SED_SCRIPT 从文件读取sed脚本
-r 使用扩展正则表达式
sed ‘ADDRESSCOMMMAND‘ file ...
ADDRESS:
1.ADDR1,ADDR2
2.$
3./RegExp/
4./PATTERN1/,/PATTERN2/
5.LINENUMBER
6.ADDR,+N
COMMAND:
d:delete 将文本读入模式空间,删除符合条件的行,将模式空间中的剩余内容显示出来
sed ‘2,5d‘ /etc/fstab
p:print 将文本读入模式空间,打印符合条件的行,将模式空间和打印的行都显示出来,如果要只显示打印的行,使用-n选项
sed -n ‘1,4p‘ /etc/fstab
a \STRING:在指定的行后追加"STRING"的新行
i \STRING:在指定的行前插入"STRING"的新行
r FILE:将指定文件的内容添加到符合条件的行后面
w FILE:将地址指定范围内的行写入指定文件中
s/PATTERN/STRING/修饰符:查找替换,默认只替换每行中第一次匹配到的字符串。
g:全局替换
i:忽略字符大小写
s/// s### [email protected]@@
\(\) \1 \2
&:表示引用前面匹配到的字符串
practice:
1.删除history命令行首的空白字符
history|sed -r ‘s/^\s+//‘
2.取出所给路径的父目录
"/tmp/log/messages/hello"|sed -rn ‘s#^/.*/([^/]+)/?#\1#gp‘