用于删除包含n个字符的行的Sed

时间:2013-12-11 17:02:43

标签: sed

我在一个文件中有很多行,每行只包含' - '我想要删除。但是文件中还有许多其他行包含'SOMETEXT - SOMETEXT'。

sed -i“/ - / d”将删除所有' - '实例,但我只想删除所有只包含' - '的行。

3 个答案:

答案 0 :(得分:0)

您可以使用^$来表示行的开头和结尾 sed -i '/^--$/d'

答案 1 :(得分:0)

仅包含--的行会匹配正则表达式^--$

如果要包含带有前导/尾随空格的行,可以将其扩展为

^\s*--\s*$

答案 2 :(得分:0)

sed -i '/^--$/' file

^$字符分别将搜索“锚定”到行的开头和结尾。

或者如果前面或后面有空格并假设现代sed

sed -i '/^[[:space:]]*--[[:space:]]*$/' file

其中[:space:]将找到空格字符和标签。

ELSE总复古sed应处理

sed  '/^[ ]*--[ ]*$/' file > newFile && mv newFile file

如果有标签,那么只需要包含一个tab char和空格char,即。\

[<Space><TAB>]  

但不拼写,只需输入空格字符和标签字符就可以了。

IHTH