Normalmente, um transformaria padrões como esse ancorando o traço nos dígitos que o cercam, por exemplo,
foo="123 - 456-78"
bar=$(echo "$foo" | sed -r -e 's,([[:digit:]])-([[:digit:]]),:,')
Ou seja, combinando um dígito em cada lado e usando uma referência de retorno para colocar os dígitos de volta.
Na verdade, sed
não é um bom exemplo, já que é (como bash
) um uso de EREs (expressões regulares estendidas) e não padrão . No entanto, como isso é para o Ubuntu, podemos supor que você está usando o GNU sed , que tem uma opção -r
para especificar EREs.