行の末尾に$のみを含む空の行を削除する方法は?

行の末尾に$のみを含む空の行を削除する方法は?

ファイルがあります:

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"

関連情報