grep regex решение для поиска 3 или более штрихов в строке - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь создать сценарий bash, который будет искать папку цепочки для ключей на компьютере Mac и удалять ее при обнаружении с помощью grep.Сложная часть - нет двух одинаковых папок.Примером является C0955E7D-DCA1-542B-B506-72A054DET9FA.Все они содержат 3 или более тире в имени.Не уверен, как grep для этого с помощью регулярных выражений.Находясь в моем каталоге ~ / Library / Keychain /, я думал что-то вроде ...

ls | grep "*-*-*-*"

Я думал, что * будет символом подстановки и будет искать любое количество цифр, которое будет содержать по крайней мере3 черточки между ними.

Я также открываюсь к использованию Python (поскольку он предустановлен на Mac), но это казалось слишком сложным.

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

при этом будут напечатаны все имена каталогов с 3 или более штрихами

find . -type d -exec sh -c '[ $(echo {} | grep -o - | wc -l) -ge 3 ]' \; -print
0 голосов
/ 30 ноября 2018

grep ". + -. + -. + -. +" Будет более точным в вашем случае.

. = any character
+ = one or more times (matches any character, one or more times)
(* = zero or more times)
0 голосов
/ 30 ноября 2018

Вы можете попробовать (\w+-){3,}\w+

Объяснение :

\w+: слово символы 1 или более раз
-: дефис
(\w+-){3,}: некоторые символы слова, за которыми следует дефис 3 или более раз
\w+: символы слова 1 или более раз

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