Я бы использовал sed
вместо grep
, так что ваш фильтр становится:
... | sed -n 's%^.* = .* = .*/\(.*\)/.*%\1%pg'
Заметки:-
- Поскольку мы сопоставляем
/
символ, я заменил обычный разделитель строк,%
чтобы упростить выражение, избегая необходимости экранировать/
. - Мы соответствие всей линии и заменить его, что происходит между двумя косыми чертами после два знака равенства, разделённого
\(
и\)
в строке матча и\1
в замене. - Мы ничего не выводим (
-n
) за исключением строк, где есть match (%pg
).
Чтобы упростить мою иллюстрацию, я использовал .*
цифры. Вы можете использовать [0-9\.]+
, но вам нужно будет использовать расширенный RE сgrep -rn ...
Если вы еще не использовали sed
, я рекомендую этот учебник .