ファイルから電子メールアドレスのみを印刷しようとしています。ファイル形式は次のとおりです。
{"12":"34","email":"[email protected]","firstname":"john","lastname":"smith","text":"0","sig":"js","..":"2017-08-23"}
awk -Fを使用してどのように抽出できますか?したがって、awk -F'"' '{print $8}' を使用できますが、列 8 が必ずしもメールアドレスではない可能性があります。
「@」正規表現にawk -Fを使用する方法はありますか?または、区切り文字のすべてのテキストを別の行に印刷し、grep '@'にパイプします。
ありがとう
答え1
答え2
これは一つのawk
方法です。
awk -v RS=\" '/@/' infile.txt
上記は、参照フィールドがある場合は正確です。それ以外の場合は、複数のRecordSeperatorを持つRSが必要です。RS='[[:blank:]]*:'
あなたのコメントの例と同じです。
答え3
reg-exがRFC 5322に完全に準拠するには調整が必要な場合がありますが、初心者の場合は、次のことを試してください。
awk '{match($0,"[a-zA-z0-9._%+-]+@[a-zA-z0-9._%+-]",a)}END{print a[0]}'