Substitua ou modifique o conteúdo do arquivo de uma só vez

2

Eu tenho um arquivo em que preciso modificar algumas linhas para cada conta.

A linha que eu preciso modificar se parece com a seguinte:

PstlInfo <some content> NNYYYN (cada conta terá essa linha)

o NNYYNN (always Y or N only 6 positions) começa na posição 150 Agora, para cada conta que eu preciso modificar, apenas a linha acima começa com PstlInfo como abaixo

PstlInfo <some content> NNNNNN (qualquer que seja a linha acima, eu preciso definir como NNNNNN )

Toda vez que eu faço manualmente abrindo o arquivo em vi editor, eu quero mudar apenas o conteúdo que está começando da posição 150 (apenas 5 posições).

Se houver poucas contas, é fácil modificá-las. É um trabalho muito tedioso. Existe alguma maneira de modificar o arquivo em um único disparo onde a linha começa com PstlInfo

    
por Aravind 24.09.2015 / 09:25

1 resposta

2

Eu vejo que você está usando o AIX. Ele tem um comando sed que deve ser capaz de fazer o seguinte:

sed '/^PstlInfo/s/^\(.\{150\}\)[NY]\{6\}/NNNNNN/' <yourfile >newfile

Isso substitui, nas linhas que começam com PstlInfo , quaisquer 6 caracteres formados por N ou Y ( [NY]\{6\} ) por NNNNNN, na posição 150 caracteres ( ^.\{150\} ) desde o início da linha. Esses 150 caracteres são copiado ( \(...\) ) e restaurado na string de substituição ( ).

    
por 24.09.2015 / 09:40