如何用sed删除文本或空行?

时间:2010-11-22 12:15:49

标签: bash sed

我想删除'third'并从下面的my.txt中删除行,然后将o / p存储在my.txt中 什么应该是sed命令? 注意:这应该是一个循环,直到文件结尾

my.txt -

first

sec


third


third

third

4 个答案:

答案 0 :(得分:4)

使用GNU sed,使用“-i”选项覆盖是微不足道的;使用标准sed,您必须写入临时文件,然后将其复制到原始文件上。

其他答案早于问题中的“空行”要求。

sed -i '/third/d;/^[ ]*$/d' my.txt

命令的第一部分,直到分号,查找“第三”并删除任何匹配的行。该命令的第二部分查找由零个或多个空格组成的任何行并删除它们。如果要删除带有空格和制表符的行,请在字符类中添加一个制表符 - 没有一种方便的方法可以用SO标记语言显示制表符。

你可以等同地写:

sed -i -e '/third/d' -e '/^[ ]*$/d' my.txt

对于非GNU sed,您可以使用:

sed '/third/d;/^[ ]*$/d' my.txt > x.$$
cp x.$$ my.txt
rm -f x.$$

答案 1 :(得分:2)

你可以这样做:

sed  -i -r '/^(third|)$/d' my.txt

答案 2 :(得分:1)

sed -i 's/third//g' my.txt

将就地修改文件。

答案 3 :(得分:0)

sed流编辑器,即用于编辑(管道)而不是文件。如果要编辑文件,则应使用文件编辑器,例如ed

ed my.txt <<-HERE
  ,g/^third$/d
  ,g/^$/d
  w
  q
HERE