Используя perl, вы можете сделать:
perl -nE '/(?<=-Dcatalina\.base=)(\S+).*/ && say $1,"\n",$&' my.log
Это будет применять регулярное выражение к каждой строке файла my.log
и печатать, если оно соответствует.
Объяснение:
/ : regex delimiter
(?<= : positive lookbehind
-Dcatalina\.base= : literally
) : end lookbehind
(\S+) : group 1, 1 or more non space
.* : 0 or more any character but newline
/ : regex delimiter
&& : logical and, the following is executed only if the regex matches
say $1,"\n",$& : print content of group 1, a line break and the whole match
Результат для данного примера:
/apps/kio/jal/current/mi_loki_porf
/apps/kio/jal/current/mi_loki_porf -Dcatalina.home=/apps/kio/jal/current/mi_loki_porf