3. 删除行 (d 命令)
使用 sed 的d
命令,您可以删除行。
请注意,这些行仅从输出流中删除。 就像任何其他 sed 命令一样,d
命令不会修改原始输入文件的内容。
默认情况下,如果您在 sed 命令之前没有指定任何地址范围,它将匹配所有行。
因此,下面的示例不会打印任何内容,因为它匹配employee.txt
中的所有行并删除它们。
sed 'd' employee.txt
删除示例
指定要删除的地址范围非常有用,以下是一些示例。
Example1:仅删除第 2 行
$ sed '2 d' employee.txt 101,John Doe,CEO 103,Raj Reddy,Sysadmin 104,Anand Ram,Developer 105,Jane Miller,Sales Manager
Example2:删除第 1-4 行
$ sed '1,4 d' employee.txt 105,Jane Miller,Sales Manager
Example3:删除从第 2 行开始直到最后一行之间的所有行
$ sed '2,$ d' employee.txt 101,John Doe,CEO
Example4:仅删除奇数行
$ sed '1~2 d' employee.txt 102,Jason Smith,IT Manager 104,Anand Ram,Developer
Example5:删除与模式 "Manager"
匹配的行
$ sed '/Manager/ d' employee.txt 101,John Doe,CEO 103,Raj Reddy,Sysadmin 104,Anand Ram,Developer
Example6:删除从第一次匹配到 "Jason"
开始一直到第 4 行之间的所有行
$ sed '/Jason/,4 d' employee.txt 101,John Doe,CEO 105,Jane Miller,Sales Manager
"Jason"
,则此命令仅删除在第 4 行之后与 "Jason"
匹配的行。
Example7:删除从第一次匹配到 "Raj"
直到最后一行之间的所有行
$ sed '/Raj/,$ d' employee.txt 101,John Doe,CEO 102,Jason Smith,IT Manager
Example8:删除从匹配到 "Raj"
的行开始直到匹配到 "Jane"
的行结束之间的所有行
$ sed '/Raj/,/Jane/ d' employee.txt 101,John Doe,CEO 102,Jason Smith,IT Manager
Example9:删除与 "Jason"
匹配的行以及紧随其后的 2 行
$ sed '/Jason/,+2 d' employee.txt 101,John Doe,CEO 105,Jane Miller,Sales Manager
实用的删除示例
下面的例子对于日常的实际操作非常有帮助。
Example1:从文件中删除所有空行
sed '/^$/ d' employee.txt
Example2:删除所有注释行(假设注释以 "#"
开头)
sed '/^#/ d' employee.txt
d
命令时,匹配该模式的整行将被删除,并且不会在删除的行上执行任何其他命令。