22. 使用正则表达式的 sed 替换
以下是一些使用正则表达式的 sed 替换示例。
将 employee.txt
每一行的最后两个字符替换为 ",Not Defined"
:
$ sed 's/..$/,Not Defined/' employee.txt
101,John Doe,C,Not Defined
102,Jason Smith,IT Manag,Not Defined
103,Raj Reddy,Sysadm,Not Defined
104,Anand Ram,Develop,Not Defined
105,Jane Miller,Sales Manag,Not Defined
删除从 "Manager"
开始之后的内容:
$ sed 's/Manager.*//' employee.txt
101,John Doe,CEO
102,Jason Smith,IT
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales
删除所有以 "#"
开头的行:
sed -e 's/#.*// ; /^$/ d' employee.txt
为下一个示例创建以下 test.html
:
$ vi test.html
<html><body><h1>Hello World!</h1></body></html>
从 test.html
中删除所有 html
标签:
$ sed -e 's/<[^>]*>//g' test.html
Hello World!
删除所有注释和空行:
sed -e 's/#.*//' -e '/^$/ d' /etc/profile
仅删除注释。 保留空白行:
sed -e '/^#.*/ d' /etc/profile
您可以使用 sed 将 DOS 换行符 CR/LF
转换为 Unix 格式。 当您将 DOS 文件复制到 Unix 时,您可以在每行末尾找到 \r\n
。
使用 sed 将 DOS 文件格式转换为 Unix 文件格式:
sed 's/.$//' filename