0

したがって、約 6 万から 7 万の vCard ファイルがあり、どの vCard にメールアドレス (EMAIL;INTERNET:me@my-domain.com) が含まれているかを確認 (または、この時点でカウント) したいと考えています。

find の出力を awk に渡そうとしましたが、すべてのファイルの内容ではなく、ファイル リストを操作するように awk を取得しました。どうすればそうすることができますか?find、xargs、awk のいくつかの組み合わせを試しましたが、正しく動作しません。

助けてくれてありがとう、ウォレ

4

2 に答える 2

2

私はおそらくこれに使うでしょうgrep

  • ファイルからアドレスを抽出する場合:

    grep -rio "EMAIL;INTERNET:.*@[a-z0-9-]*\.[a-z]*" *
    

    またはを使用してcut、先頭の を削除します。sedawkEMAIL;INTERNET:

    ... | cut -d: -f2
    ... | sed "s/.*://"
    ... | awk -F: '{print $2}'
    
  • 特定のアドレスを含むファイルの名前が必要な場合:

    grep -ril "EMAIL;INTERNET:me@my-domain\.com" *
    

grep一度に多くのファイルを処理できない場合は、オプションをドロップしてand-rを試してください:findxargs

find /start/dir -name "*.vcf" -print0 | xargs -0 -I {} grep -io "..." {}
于 2013-06-29T11:46:03.300 に答える
0

grep再帰的にこれを行うことができます

grep -r 'EMAIL.+@'
于 2013-06-29T11:46:13.827 に答える