Isso é trivial com uma ferramenta como sed
:
$ sed 's/[0-9]\s-\s[0-9]/& /' file
xadsfa 1 - 2 --- --- --- AB
jklhwj 3 --- --- --- asdfh
weriulceh 2 - 4 --- --- --- asdf
O operador s/foo/bar/
substituirá a primeira ocorrência de foo
por bar
em cada linha do arquivo de entrada. Se você quiser combinar todos casos em uma determinada linha, use g
: s/foo/bar/g
. O &
é "o que quer que tenha sido correspondido", por isso s/[0-9]\s-\s[0-9]/& /
substituirá a primeira correspondência da sua regex com o que tiver correspondido mais um único espaço.
Observe que, se você está combinando apenas um único espaço (não as guias ou outro espaço em branco), não há motivo para usar \s
. Apenas use espaços:
sed 's/[0-9] - [0-9]/& /' file
Finalmente, para fazer as alterações no próprio arquivo, use -i
(isso pressupõe o GNU sed
, a sintaxe é ligeiramente diferente em outras implementações; também, isso substituirá o arquivo pelo resultado da operação sed. Certifique-se de fazer o que você precisa antes de adicionar -i
):
sed -i 's/[0-9] - [0-9]/& /' file