awkでパターン検索を印刷する前に文字列を追加する方法

awkでパターン検索を印刷する前に文字列を追加する方法

申し訳ありません。この簡単な質問に対する答えが見つからないようです。我々は、多数の電子メールを含むファイルを持っています。

<To: [email protected]>
<Cc: [email protected]>
<From: [email protected]>

hello person here is random text

待って、20以上のメールを繰り返してください

先生は生徒がawkからEメールを含む行を印刷し、最初に「email =」を追加したいと思います。彼のヒントは、To:From:とCc:をパターン検索として使用することです。彼の理想的な出力は

email = [email protected]
email = [email protected]
email = [email protected]

しかし、その人もかかるでしょう。

email = <To: [email protected]>
email = <Cc: [email protected]>
email = <From: [email protected]>

後者の例を印刷することができます。 (各例ではジャンク文字を削除する方法がわかりません。電子メールごとに一貫していません。)しかし、どのように追加しますかemail =

これまで私

awk '/To:|From:|Cc:/ {print}' file

私も他の多くの奇妙なことを試しましたが、彼らは私に構文エラーを与えました。

ありがとうございます!

ベストアンサー1

以下が必要なことをしているようです。

awk '/To:|From:|Cc:/ {$2=substr($2,1,length($2)-1); print "email = ", $2 }' file

この時点で:

{$2=substr($2,1,length($2)-1)

と同様に、文字列の2番目の要素を取得し、[email protected]>最後の文字を削除します>

"email = "その後、編集した2番目の要素と一緒に希望の文字列を印刷します$2

print "email = ", $2

結果は次のとおりです。

email =  [email protected]
email =  [email protected]
email =  [email protected]

印刷の仕組みをよく理解することをお勧めします。https://www.gnu.org/software/gawk/manual/html_node/Print-Examples.html

おすすめ記事