Как я 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 будет состоять только из строк с @. Вы можете использовать этот новый файл или удалить все строки в старом файле и вставить в него содержимое нового файла.