Inserir espaço na posição especificada em um arquivo

0

Eu tenho este arquivo de amostra:

234234|111||J1X0H8|SERP||R|D|666|M
234235|222||J1X0N5|SERP||C||555|M

Para cada linha, eu preciso inserir um espaço após o terceiro caractere da quarta coluna, assim:

234234|111||J1X 0H8|SERP||R|D|666|M
234235|222||J1X 0N5|SERP||C||555|M

Estou tentando usar os comandos sed e awks, mas sem resultados positivos. Como posso fazer isso?

    
por Martin Rodriguez-Harispe 27.01.2015 / 20:27

1 resposta

1

Com o awk, é

awk -F '|' -v OFS='|' '{sub(/^.../, "& ", $4); print}' file

Mas isso não pode editar no local, então você precisa:

t=$(mktemp)
awk -F '|' -v OFS='|' '{sub(/^.../, "& ", $4); print}' file > "$t" && mv "$t" file

com sed

sed -i 's/^[^|]*|[^|]*|[^|]*|.../& /' file

Se você quiser validar o código postal,

sed -i 's/^\([^|]*|[^|]*|[^|]*|[[:alpha:]][[:digit:]][[:alpha:]]\)\([[:digit:]][[:alpha:]][[:digit:]]|\)/ /' file
    
por 27.01.2015 / 20:42