ある部分が他の部分と同じであれば、他の部分を切り捨てますか?

ある部分が他の部分と同じであれば、他の部分を切り捨てますか?

私は次のように電子メール参照属性文字列を使用します。

On dd mmm yyyy hh:mm +hhmm, from [email protected] (Example Dot Org):

送信者のメールアドレスはどこに[email protected]あり、Example Dot Org送信者の実際の名前はどこですか?

実際の名前が指定されていない場合(場合によっては実際の名前が指定されていても)、2つは同じで、次の属性文字列で終わります。

On dd mmm yyyy hh:mm +hhmm, from [email protected] ([email protected]):

この場合のみ、その部分を削除してそのままにしたいと思います。([email protected])

On dd mmm yyyy hh:mm +hhmm, from [email protected]:

私は編集者に電子メールを送信する前に電子メールを処理するためにPerlを呼び出すシェルスクリプトをすでに持っており、帰属行を処理するためにここにいくつかのコードを追加するだけでよいと思いました。解決策はPerl、awk、sed、または他のものとして実行できます(しかし他のものは望ましくありません)。またエキゾチック)。

私は、帰属線が入力の最初の空行の後に空でない最初の行であることを知っており、好みの帰属行形式をハードコーディングすることには気にしません。単にかっこ内の部分を削除するのは些細なことですが、以前の値と同じ場合にのみこれを行うには?電子メール(テキストファイル)の他の内容を変更する危険性がないことをお勧めします。

ベストアンサー1

2回表示されるアドレスを含む部分文字列を、1つのアドレスだけを含む部分文字列の前半に置き換えます。

bash-4.2$ echo '
On dd mmm yyyy hh:mm +hhmm, from [email protected] (Example Dot Org):
On dd mmm yyyy hh:mm +hhmm, from [email protected] ([email protected]):
On dd mmm yyyy hh:mm +hhmm, from [email protected]:
' | sed -r 's/(, from (\S+)) \(\2\)/\1/'

On dd mmm yyyy hh:mm +hhmm, from [email protected] (Example Dot Org):
On dd mmm yyyy hh:mm +hhmm, from [email protected]:
On dd mmm yyyy hh:mm +hhmm, from [email protected]:

おすすめ記事