sed (Stream Editor) 在Linux和类Unix系统中是一个非常强大的文本处理工具,它可以执行各种文本流编辑操作,包括删除文件中的特定行。以下是sed进行删除操作的一些基本用法:
删除指定行:
- 删除单一行(例如删除第5行):
sed '5d' filename.txt
- 删除一个范围内的行(例如删除第1行到第4行):
sed '1,4d' filename.txt
- 删除单一行(例如删除第5行):
删除匹配正则表达式的行:
- 删除包含特定模式(例如删除所有包含 "La" 的行):
sed '/La/d' filename.txt
- 删除包含特定模式(例如删除所有包含 "La" 的行):
删除不匹配正则表达式的行(保留匹配行):
- 删除不包含 "La" 的行:
sed '/La/!d' filename.txt
- 删除不包含 "La" 的行:
删除空行:
- 删除只包含空白字符(换行符除外)的空行:
sed '/^$/d' filename.txt
- 或者更简单的方法,如果空行是指没有非空白字符的行:
sed '/^ *$/d' filename.txt
- 删除只包含空白字符(换行符除外)的空行:
删除文件尾部的若干行:
- 删除最后n行(例如删除最后3行):
或者使用较新的GNU sed版本:sed -e :a -e '$d;N;2,$ba' filename.txt
sed -i '$d' filename.txt # 删除最后一行 sed -i -e :a -e '$d;N;2,$ba' filename.txt # 删除最后n行
- 删除最后n行(例如删除最后3行):
注意:
-i
参数表示直接修改原文件,如果不加-i
,sed默认只输出修改后的结果到标准输出,而不会改变原文件。d
是sed命令语言中的动作,表示“删除”当前行。
以上命令都是在命令行中运行,如果需要对文件进行永久性修改,请确保先备份原始文件。在很多情况下,尤其是在生产环境中,建议先测试命令的正确性后再应用到实际文件上。