Для тех, у кого нет grep -P
, вы можете сделать это с помощью sed
или awk
в любой системе POSIX.
sed -n -e 's/^.*\/filename-\([^\/]*\)\.tar\.gz.*$/\1/p' -e T -e q
Объяснение: отключите печать по умолчанию, найдите строку, содержащую желаемый образец, и замените все, кроме той части, которую вы хотите сохранить, распечатайте результат замены и выйдите, если было совпадение. Обратите внимание, что если в первой строке совпадений есть несколько совпадений, будет выбрано последнее.
С помощью awk (выбор первого совпадения в строке):
awk 'match($0, /filename-[^/]*\.tar\.gz/) {
print substr(RSTART + 9, RSTART + RLENGTH - 9 - 6, $0);
exit;
}'
В Ubuntu есть баг с чашками, который звучит так же.
https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug/1731417