|
From: | William Alves dos Santos |
Subject: | Re: [shell-script] Substituir determinada posição |
Date: | Wed, 10 Aug 2016 14:10:00 -0300 |
Olaeu vejo algumas opçõesawk com variavel FIELDWIDTHS onde vc especifica o tamanho de cada campo ( e ai cria campos pares de 1 caracter q sera o seu S para ignorar ). o man do awk fala melhor sobre esta variavelpode especificar a variavel OFS pra escolher o separador$ awk -v OFS="|" -v FIELDWIDTHS="8 1 19 1 13 1 8" '{ print $1,$3,$5, $7 }' example
12233455|ajjdhkfklmdkljedjjs|sjskdjjSantos|williams
12233455|ajjdhkfklmdkljedjjs|sjskdjjrantos|williams
12233455|ajjdhkfklmdkljedjjs|sjskdjjyantos|williams
aaz33455|ajjdhkfklmdkljedjjs|sjskdjjanytos|willis12 vc pode usar o cut para pegar apenas o campos que vc quer, sem o S e ai usar o awk ou sed para pegar as posições, algo como$ cut -c 1-8,10-20,22-28 arquivo | ...mas ele sozinho nao ajuda muito.2016-08-07 4:25 GMT+02:00 address@hidden [shell-script] <address@hidden.br >:Prezados,
Peço a gentileza em encontrar uma solução, para a questão.
Arquivo de entrada modelo:
12233455SajjdhkfklmdkljedjjsSsjskdjjSantosSwilliamsS
12233455SajjdhkfklmdkljedjjsSsjskdjjrantosSwilliamsS
12233455SajjdhkfklmdkljedjjsSsjskdjjyantosSwilliamsS
aaz33455SajjdhkfklmdkljedjjsSsjskdjjanytosSwillis12S
Por incrível que pareça colocaram o caractere 'S' maiusculo como separador, por este motivo um simples tr ou um sed não funcionária corretamente.
A primeira linha do exemplo consta um a string que possui o valor: "sjskdjjSantos", na terceira coluna.
A parte boa que tudo possui tamanho fixo, eu já consegui identificar as posições onde devo substituir, mas não consegui montar um sed que realize as substituições.
Poderia ser utilizado um laço para ler linha a linha cortando (substrings) e remontando as partes, mas o arquivo é muito grande e o tempo de processamento não será satisfátório.
Como realizar a substituição?
Somente dos campos: "9 29 43 52"
Obrigado
--
[Prev in Thread] | Current Thread | [Next in Thread] |