我想删除'third'并从下面的my.txt中删除行,然后将o / p存储在my.txt中 什么应该是sed命令? 注意:这应该是一个循环,直到文件结尾
my.txt -
first
sec
third
third
third
答案 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)