Если я вас правильно понимаю, вам нужно регулярное выражение, которое позволит вам использовать grep для определения путей. Я не уверен, что вы пытаетесь сделать с регулярным выражением, которое вы опубликовали. Почему вы хотите что-то повторить? Для путей требуется только одна косая черта: /etc
В любом случае, если вам нужен какой-либо путь (пути могут также содержать несловарные символы, такие как { , [ , ( пробелы и новые строки и т.д.), Попробуйте это:
grep -E '/[^/]+' *txt
_____
| |--------> one or more
|-----------> A character class, '^' in a character class means NOT,
so this class means "anything that is not /".
-E сообщает grep что шаблон, который вы ему дадите, должен интерпретироваться как расширенное регулярное выражение, а не как его стандартное базовое регулярное выражение. ERE поддерживают « + для "одного или нескольких", что необходимо для поиска только строк с хотя бы одним символом без косой черты после первой косой черты.
Если вы хотите найти только пути с более чем одним / , вы можете сделать что-то вроде
grep -E '/[^/]+/[^/]+' *txt
Пути могут также заканчиваться косой чертой, если по какой-то причине вы хотите сохранить такие конечные косые черты (/? означает «найти ноль или один /):
grep -E '/[^/]+/[^/]+/?' *txt
В частности, регулярное выражение, которое вы используете, не работает по разным причинам. Прежде всего, как указал @erewok, вы используете круглые скобки и + в квадратных скобках. Так как в скобках указан класс символов, все, что в них содержится, рассматривается как один из символов, которые нужно найти (за исключением ^ что делает его классом отрицательных символов).
Таким образом, [(/\w+)]+ означает найти любой из ( , / , любой символ слова (\w), + или ) один или несколько раз. В любом случае \w не распознается grep если вы не используете Perl-совместимые регулярные выражения. Вы можете активировать их в grep с флагом -P . Например, это будет соответствовать пути как /etc:
grep -P '/\w+' *txt
Если вы знаете, что ваши пути всегда будут состоять из символов слова (т. Е. Az, AZ, 0-9 и _), вы можете использовать выражение, подобное приведенному выше, но поскольку нельзя быть уверенным, используя что-то менее строгое, lke my fist предложение предпочтительнее.