ファイルをフィルタリングして正規表現の一致をストリーミングできます。ただし、大容量ファイルではそのエントリを削除する必要があります。
正規表現:^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
sed -e '/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/d/ /g' file
試合だけがストリーミングされ、交換/カットは行われません。
一致するファイルを含むファイルも検索できます。
働かせる方式は何ですか。
答え1
PCRE(Perl Compatible Regular Expressions)とを使用しているようですsed
。デフォルトでは、このsed
ユーティリティは基本正規表現(BRE)(またはほとんどのシステムでは拡張正規表現(ERE)-E
)のみを認識します。
私も構文が正しいとは思いませんsed
が、問題の表現に追加内容があるようなので読みにくいです*
。電子メールからマルチパート区切り文字を削除したいようですが、それを正しく一致させることに気付かないようです(マルチパートセクションの先頭を対応するクローズ区切り文字と一致させます)。構文が変更されると、sed
式は電子メールの内容全体を削除したり、すべての添付ファイルをメッセージ本文にマージしたりできます。
PCRE表現
^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
EREと同じ(と一緒に使用sed -E
)
^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3})?=$
(あなたがやっているような)それを使用して行を削除しますが、コマンドの末尾はd
エラーです。削除すると、すべての添付ファイルが電子メール本文にマージされる可能性があります。/ /g
sed
/ /g
電子メールの添付ファイルを削除したい場合(例:コメントで指摘した)、私はsed
これを行うために正しい電子メールパーサーを使用しようとしません。
これを行う方法の例は、次の関連する質問にあります。
個人的には、上記の最初のリンクにリンクされている質問/回答に似たPerlスクリプトを作成します。常にこれらのスクリプトのテスト実行を実行する必要があります。コピー間違えた場合に備えてメールを送ってください。
電子メールfdm
ツールは次のことができます。フィルターこれは、メッセージの添付ファイルの数やサイズに基づいてアーカイブメールボックスから大量の電子メールをフィルタリングする便利な方法です。
答え2
努力する:
sed -E "s/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$//g" file
出力を再確認してください。資本でなければなりません-E
。-e
動作しません。
うまくいけば、-iE
ファイルを使って直接変更してください。