Для этого вам не нужны регулярные выражения или внешние команды, такие как tr
. Расширение встроенного параметра Bash может сделать это:
row1='+00 00:30:07.880000'
row1=${row1//[^0-9.]/}
echo "row1=$row1"
выходы row1=00003007.880000
.
Выход имеет два ведущих нуля, которых нет в выводе, предложенном в вопросе. , Возможно, существует неустановленное требование удалить префиксы, разделенные пробелами. Если это так, возможный код:
row1='+00 00:30:07.880000'
row1=${row1##* }
row1=${row1//[^0-9.]/}
echo "row1=$row1"
, который выводит row1=003007.880000
.
См. Как выполнять манипуляции со строками в bash? для объяснения ${row1//[^0-9.]/}
и ${row1##* }
.