$ cat test.txt
dummy - 22847847
sha - 84734747
DHS - 374874
$ awk '{$3=1}1' FS="" OFS="" test.txt
du1my - 22847847
sh1 - 84734747
DH1 - 374874
entrada:
dummy - 22847847
sha - 84734747
DHS - 374874
resultado esperado:
du1my - 22847847
sh1 - 84734747
DH1 - 374874
$ cat test.txt
dummy - 22847847
sha - 84734747
DHS - 374874
$ awk '{$3=1}1' FS="" OFS="" test.txt
du1my - 22847847
sh1 - 84734747
DH1 - 374874
com sed
:
sed 's/^\(..\).//' infile > expected_result
O (..)
é conhecido como uma correspondência de grupo e captura os dois primeiros caracteres, e a é sua referência anterior. o ponto
.
na expressão regular corresponde a qualquer caractere único.
se não fosse 3 rd lugar mas N th , você poderia fazer o seguinte para alterar o caractere de lugar 3 rd com 1
.
sed 's/^\(.\{2\}\).//' infile
Ou apenas abaixo, conforme indicado por @steamdriver :
sed 's/./1/3' infile
Tags text-processing perl awk sed