Как я grep для всех строк без символа "@" в строке

У меня есть текстовый файл, открытый в BBEdit/InDesign, с адресами электронной почты в некоторых строках (около трети строк) и именами и датами в других строках. Я просто хочу сохранить строки с электронными письмами и удалить все остальные.

Простой шаблон, который я вижу, чтобы исключить все строки, кроме тех, на которых указаны адреса электронной почты, - это иметь отрицательное соответствие для @ персонаж.

Я не могу использовать grep -v pattern потому что найти и заменить реализацию grep диалоговое окно просто имеет поля для Find pattern а также Replace pattern, grep -something варианты не существуют в этом контексте.

Обратите внимание, я отмечаю, что пытаюсь создать действительный тест адреса электронной почты вообще, просто используя наличие одного (или более) @ символ, позволяющий строке остаться, все остальные строки должны быть удалены из списка.

Самым близким, что я получил, был шаблон, который поражает только строки адреса электронной почты (противоположный результат моей цели):

^((\w+|[ \.])\w+)[?@].*$

Я попробовал различные комбинации ^.*[^@].*$ и более изощренный /w а также [/w|\.] в скобках и избегая @ с [^\@] и отрицательный взгляд вперед, как (!?),

Я хочу найти эти строки адресов электронной почты и удалить их с помощью любого из этих приложений в OS X BBEdit/InDesign. Я буду использовать командную строку, если придется. Должен быть способ использовать поиск и замену в приложении grep, хотя я и ожидал.

1 ответ

Как указано в комментариях, grep -v @ filename перечисляет все строки без символа @. Вы также можете использовать grep @ filename > new_filename. Файл new_filename будет состоять только из строк с @. Вы можете использовать этот новый файл или удалить все строки в старом файле и вставить в него содержимое нового файла.

Другие вопросы по тегам