私の正規表現の一致を置き換えることはできません。

私の正規表現の一致を置き換えることはできません。

ファイルをフィルタリングして正規表現の一致をストリーミングできます。ただし、大容量ファイルではそのエントリを削除する必要があります。

正規表現:^(?:[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エラーです。削除すると、すべての添付ファイルが電子メール本文にマージされる可能性があります。/ /gsed/ /g

電子メールの添付ファイルを削除したい場合(例:コメントで指摘した)、私はsedこれを行うために正しい電子メールパーサーを使用しようとしません。

これを行う方法の例は、次の関連する質問にあります。

個人的には、上記の最初のリンクにリンクされている質問/回答に似たPerlスクリプトを作成します。常にこれらのスクリプトのテスト実行を実行する必要があります。コピー間違えた場合に備えてメールを送ってください。

電子メールfdmツールは次のことができます。フィルターこれは、メッセージの添付ファイルの数やサイズに基づいてアーカイブメールボックスから大量の電子メールをフィルタリングする便利な方法です。

おすすめ記事