Удалить строки, которые не включают только символы - PullRequest
3 голосов
/ 07 марта 2019

Я пытаюсь удалить строки, которые содержат что-либо еще, кроме символов алфавита и пробелов.Числа, запятые, кавычки, математические символы: любая строка с ними должна быть удалена.

Ввод:

FISIOLOGIA UMANA
FISIOLOGIA UMANA
http://id.loc.gov/vocabulary/subjectSchemes/FI
Sepúlveda, Luis
La sirenetta Walt Disney
La sirenetta
CFIV007842
CFIV006619
Lubac, Henri : de
Roma

Ожидаемый результат:

FISIOLOGIA UMANA
FISIOLOGIA UMANA
La sirenetta Walt Disney
La sirenetta
Roma

Пока что,Я использовал :%g!:[A-Za-z]:d с Vim, что должно было сработать.Любопытно, что он утверждает, что соответствует каждой строке (как и ожидалось), но не удаляет строки, в которых найдены не алфавитные символы.В чем причина такого поведения?Как правильно решить проблему?

Ответы [ 2 ]

5 голосов
/ 07 марта 2019

:%g!:[A-Za-z]:d проверяет, какие строки соответствуют алфавиту, а затем удаляет несовпадающие строки. Поскольку каждая строка совпадает, никакие строки не будут удалены.

Я думаю, что было бы легче найти символы, которые вы хотите удалить:

:g/[^a-zA-Z ]/d_
4 голосов
/ 07 марта 2019

Ваше регулярное выражение соответствует всем строкам.Вам нужен тот, который проверяет, что в строке вся есть только символы:

:%g!:^[A-Za-z ]\+$:d

Обратите также внимание, что я включил пробел, поскольку вы, похоже, тоже хотите это разрешить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...