Как я grep для всех строк без символа "@" в строке - PullRequest
0 голосов
/ 09 мая 2018

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

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 09 мая 2018

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

...