Как я могу использовать xargs для рекурсивного анализа адресов электронной почты из текстовых/html файлов?

Я попытался рекурсивно анализировать адреса электронной почты из каталога файлов text/html с помощью xargs и grep, но эта команда продолжает включать путь (я просто хочу, чтобы адреса электронной почты были в моем полученном файле emails.csv).

find . -type f | xargs grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" >>  ~/emails.csv

Можете ли вы объяснить, что не так с моей командой grep? Мне не нужно, чтобы это было отсортировано или уникально. Я хочу сопоставить все вхождения адресов электронной почты в файлах. Мне нужно использовать xargs, потому что я анализирую электронные письма в текстовых файлах объемом 20 ГБ.

Спасибо.


person Aria Theluse    schedule 17.08.2015    source источник
comment
Я бы, вероятно, заключил регулярное выражение в одну кавычку, чтобы избежать интерполяции регулярного выражения оболочкой.   -  person thrig    schedule 18.08.2015
comment
Попробуйте добавить -h в качестве опции к grep, чтобы скрыть имена файлов — они добавляются автоматически при поиске более чем в одном файле.   -  person Mark Setchell    schedule 18.08.2015
comment
-h сделал свое дело! Спасибо @MarkSetchell   -  person Aria Theluse    schedule 18.08.2015
comment
Я добавил это как ответ, чтобы все могли легко увидеть.   -  person Mark Setchell    schedule 18.08.2015


Ответы (1)


Когда вы указываете grep искать более чем в одном файле, оно добавляет соответствующее имя файла к результату поиска. Попробуйте следующее, чтобы увидеть эффект...

Сначала выполните поиск в одном файле:

grep local /etc/hosts
# localhost is used to configure the loopback interface
127.0.0.1   localhost

Теперь ищем в двух файлах:

grep local /etc/hosts /dev/null
/etc/hosts:# localhost is used to configure the loopback interface
/etc/hosts:127.0.0.1    localhost

Чтобы скрыть имя файла, в котором было найдено совпадение, добавьте переключатель -h к grep, как показано ниже.

grep -h <something> <somewhere>
person Mark Setchell    schedule 18.08.2015