Если вы можете использовать другой инструмент после grep, cut
делает это очень просто:
$ echo -e "Akqmskdnlcn shddhjshd.py" | grep "[[:space:]]*.py" \
| cut -d' ' -f2
shddhjshd.py
Если вам нужно использовать только grep
, вы переворачиваете вещи и сопоставляете любой «не пробел», не пробел (\ S), который предшествует «.py», а затем используете флаг -o для вывода совпадения и вот оно:
$ echo -e "Akqmskdnlcn shddhjshd.py" | grep -o "\S*.py"
shddhjshd.py