sed は [0-9]% で終わる行を削除します。

sed は [0-9]% で終わる行を削除します。

stdout-stderrを記録するスクリプトを作成しています。

ログには、次の複数のインスタンスが含まれています。

(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 52099 files and directories currently installed.)

[0-9]%- で終わる行を削除して行を次のようにするにはどうすればよいですか?

(Reading database ... 
(Reading database ... 52099 files and directories currently installed.)

私は様々な形を試しました。

sed -i '/[0-9%]$/d' ~/test/Log

...エスケープ%を含みますが、運はありません。私が見つけた例は見つかりません。

特にそれを使いたいですsed。どんなアイデアがありますか?


そのsed -i '/[0-9%]$/d' ~/test/Log行はテストファイルでは機能しているようですが、何らかの理由で実際のログでは機能しません。

私はこれを試しました/%$/d(テストファイルで動作することができます)。ログでは機能しません。

試しましたが、/[0-9]%$/dログファイルには何の影響もありません...


sedバージョン:

~ sed --version
sed (GNU sed) 4.2.2

ログパス~/test/Log


'/[0-9]%[[:blank:]]*$/d'変更ログもないようです。

出力に関してエラーはありません。ファイルを分類すると、正しい出力(行が削除されます)が表示されます。


メモ:

ファイルを開いたときに行が消えたことがわかりましたcat。エディタ(Sublime Text 3)でファイルを開いたときに行がまだ表示されました。

どこかにスワップファイルがあるかと再起動もしてみましたが、結果は同じです。

ベストアンサー1

%括弧内にはあってはなりません。正しい実装は次のとおりです。
sed -i '/[0-9]%$/d' ~/test/Log

おすすめ記事