Soa como
< file tr '+:)' dhm | tr -d '('
Faria isso. Ou para combinar com esse padrão de forma mais explícita:
sed 's/(\([0-9]\{1,\}\)+\([0-9]\{1,\}\):\([0-9]\{1,\}\))/dhm/g
s/(\([0-9]\{1,\}\):\([0-9]\{1,\}\))/hm/g' < file
Com algumas implementações de sed
, você pode simplificar o uso de expressões regulares estendidas para:
sed -E 's/\(([0-9]+)\+([0-9]+):([0-9]+)\)/dhm/g
s/\(([0-9]+):([0-9]+)\)/hm/g' < file
Ou com um único comando s
com perl
:
perl -pe 's{\((?:(\d+)\+)?(\d+):(\d+)\)}{
($1 && "$1d") . "$2h$3m"}ge' < file
Ou:
perl -pe 's/\((\d*\+?\d+:\d+\))/$1 =~ y|+:)|dhm|r/ge' < file