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