• 本页内容

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