sed是个文档流编辑器,stream editor的简写。
其并不处理文件本身,将符合条件的文本读入内存(模式空间)进行处理。然后再将模式空间中的内容答应到屏幕。
用法如下:
sed [options] 'AddressCommand' file...
[options]为sed命令选项 'AddressCommad'为文本地址(file文件中符合条件的行)和处理命令 file为原文件。
Address的用法如下:
- StartLine,EndLine 指定开始行和结束行
- /RegExp/ 正则表达式匹配到的行
如:
sed '/^//d' /etc/fstab
将/etc/fstab文件的内容读取到内存,删掉/开头的行,然后将其他内容显示到屏幕 - /pattern1/,/pattern2/
第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,中间的所有行 - LineNumber
指定的行 - StartLine,+N 开始行后到第N行中间的行
Command的用法如下:
d:删除
sed '1,2d' file
将file读取到内存并删掉1,2行,然后将其余内容显示到屏幕
p:显示符合条件的行
sed '/^//p' /etc/fstab
将/etc/fstab文件的内容读取到内存,显示/开头的行,然后其他内容也显示到屏幕,如此/开头的行就会被显示两次,所以应使用sed命令的静默模式,即
sed -n '/^//p' /etc/fstab
a: 用法 a \string在指定的行后面追加新内容string
如:sed '/^//a #'在所有/开头的行后新增一行,内容为#
i:用法 a \string在指定的行前面追加新行,内容为string
r: r FILE将指定文件的内容添加至符合条件的行处
w: w FILE将指定范围内的内容另存至指定的文件中
sed '/oot/w /tmp/oot.txt' /etc/fstab
s:s/pattern/string/查找并替换,默认值替换每行中第一次被模式匹配到的字符串,加修饰符可实现其他用途。支持如下两个修饰符
- g:全局替换
- i:忽略大小写
修饰符添加在sed命令的位置
s/pattern/string/gi
另外/为该命令的分隔符,可以使用其他字符替换,如:
s@pattern@string@gi
sed '1,$s/oot/OOT/g' /etc/fstab 将/etc/fstab 中所有oot替换为OOT
也支持后向引用
sed 's#l..e#&r#g' test.txt
sed 's#(l..e)#\1r#g' test.txt
sed命令的选项[options]:
-n 静默模式 不再默认显示模式空间中的内容。
-i 直接修改原文件
-e
-f /PATH/TO/SED_SCRIPT
sed of /path/to/sed_script file
history | sed 's#^[[:space:]]*##g' | cut -d' ' -f1
欢迎您了解贝程教育