如何删除仅包含行尾 $ 的空行?

如何删除仅包含行尾 $ 的空行?

我有一个文件:

cat -E extracted_numbers.txt 
11.47$
0.32$
$
1.37192$
-4.$
7.$
20.$
13.$
$0.
15000$
15000.$
$
2.87$
$.6
47.$
$00.
0.0000000000000000$
0.0000000000000000$
$
0.0000000000000000$
0.0000000000000000$
$
0.0000000000000000$
0.0000000000000000$
$
0.0000000000000000$
0.0000000000000000$
$
0.0000000000000000$
0.0000000000000000$
$
0.0000000000000000$
0.0000000000000000$
$
0.0000000000000000$
0.0000000000000000$
$
0.$
0.$
0.$
$.
0.$
0.$
$
$0.
279.33$
$

如何删除空行或仅包含行尾的行?我试过:

sed -i '/^$/d' extracted_numbers.txt 

grep -v '^$' extracted_numbers.txt 

为什么它不起作用?有谁知道我可以使用下一个命令吗?谢谢

答案1

您可以捕获包含某些内容的行(.在 RE 中匹配任何字符):

grep . file >file.new

如果您发现这仍然与您所谓的空白行匹配,那么您可能需要修复 Windows 行结尾:

tr -d '\r' <file | grep . >file.new

或者也许您不需要的空白行实际上包含空格(可能包括 Windows 行结尾):

grep '[^[:space:]]' <file >file.new

如果您想要就地编辑,则此方法对于名为的文件是可移植的file(如果它是已知的文件名,您可以省略--上面示例中出现的类似内容):

grep . <file >"file.$$.tmp" && mv -f -- "file.$$.tmp" "file"
rm -f -- "file.$$.tmp"

相关内容