sed/awk/grep フィルタ処理された txt ファイルの電子メールを解析します。

sed/awk/grep フィルタ処理された txt ファイルの電子メールを解析します。

複数のtxtファイルがあり、ファイルに「プロバイダ」というテキストが含まれている場合は、ファイルから電子メールを抽出したいと思います。テキストファイルの形式が異なります。 「サプライヤー」はテキストのどこにでも現れます。

以下はいくつかの簡単な例です。
ファイル1.txt
名前:Joe1
プロバイダ
...
電子メール[Eメール保護]

ファイル2.txt
名前:Joe2
...
顧客
...
電子メール[Eメール保護]

ファイル3.txt
名前:Joe3
...電子メール
を提供
[Eメール保護]

このショートコードを使用していますが、すべてのメールが返されます。

$ awk -F, '{
  for (i=1; i<=NF; i++)
    if ($i ~ /@/)
       print $i
}' *

助けてください?

ありがとう

ベストアンサー1

$ awk 'FNR==1 { provider = False } 
       $0 ~ /Provider/ { provider = True} 
       $0 ~ /@/ && provider == True {
         for (i=1; i<=NF; i++) {
           if ($i ~ /@/) print $i;
         }
       }' *
  • 最初の行にprovider設定された各ファイルについてFalse
  • 行に次のものが含まれている場合は、Providerプロバイダを次に設定します。True
  • 行に含まれていて、@その単語が以前に見たことがある場合は、フィールドをProvider繰り返して単語を含むフィールドを印刷します。@

おすすめ記事