Если вы хотите выполнить минимальный объем работы, измените
grep -P 'PATTERN' file.txt
на
perl -nle 'print if m{PATTERN}' file.txt
и измените
grep -o -P 'PATTERN' file.txt
на
perl -nle 'print $& if m{PATTERN}' file.txt
Итак, вы получаете:
var1=`perl -nle 'print $& if m{(?<=<st:italic>).*(?=</italic>)}' file.txt`
var2=`perl -nle 'print $& if m{(property:)\K.*\d+(?=end)}' file.txt`
В вашем конкретном случае вы можете получить более простой код с дополнительной работой.
var1=`perl -nle 'print $1 if m{<st:italic>(.*)</italic>}' file.txt`
var2=`perl -nle 'print $1 if /property:(.*\d+)end/' file.txt`