Ajuda com Manipulação de Texto. [RESOLVIDO]

1. Ajuda com Manipulação de Texto. [RESOLVIDO]

Eduardo da Silva Carvalho
duducarvalho86

(usa Red Hat)

Enviado em 13/09/2018 - 16:36h

Pessoal, boa tarde,

Aqui estou eu novamente solicitando ajuda aos colegas do fórum, como disse noutra ocasião, não sou um usuários experiente no mundo unix e minhas dúvidas e problemas estão basicamente na manipulação de arquivos textos.
Estou precisando de uma ajuda seja com SED,AWK ou um Shell Script para solucionar o problema abaixo:

PR-FAS,L10:5,50080508,2939.0,5939.02,9188844.70,-7.31613144,-73.47177411,1011.37
PR-FAS,L70:8,50080508,2939.2,5939.34,9188829.57,-7.31626793,-73.47177257,1011.36
PR-FAS,L2054:45,50080508,2939.4,5939.66,9188814.44,-7.31640444,-73.47177104,1011.34
PR-FAS,L10:9904,50080508,2939.6,5939.97,9188799.30,-7.31654097,-73.47176954,1011.32
PR-FAS,L40:2,50080508,2939.8,5940.29,9188784.16,-7.31667753,-73.47176806,1011.29
PR-FAS,L907:4,50080508,2940.0,5940.60,9188769.02,-7.31681410,-73.47176661,1011.25
PR-FAS,L804:8,50080508,2940.2,5940.91,9188753.88,-7.31695071,-73.47176519,1011.20
PR-FAS,L1089:774,50080508,2940.4,5941.21,9188738.73,-7.31708734,-73.47176378,1011.15

Como podem ver ele segue um padrão, onde temos uma letra que nesse caso é o "L", após temos um valor seguido de ":" um outro valor e terminamos esse campo com "," - PR-FAS,L10:5,50080508

O que eu preciso fazer:

1º - Retirar essa Letra "L" ou qualquer outra que substitua... Isso não é prioridade pois essas letras só podem ser "L", "T" ou "P" então via SED eu consigo retirar do arquivo final.
2º - E retirar o ":" e tudo que vem após ele até a primeira virgula ",".

Original:
PR-FAS,L1089:774,50080508

Esperado:
PR-FAS,1089,50080508

É possível fazer isso de forma automática? Preciso automatizar pois tenho arquivos de até 700MB com a mesma estrutura para consertar.

Desde Já Agradeço a ajuda de todos




  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 13/09/2018 - 17:29h

duducarvalho86 escreveu:

Pessoal, boa tarde,

Aqui estou eu novamente solicitando ajuda aos colegas do fórum, como disse noutra ocasião, não sou um usuários experiente no mundo unix e minhas dúvidas e problemas estão basicamente na manipulação de arquivos textos.
Estou precisando de uma ajuda seja com SED,AWK ou um Shell Script para solucionar o problema abaixo:

PR-FAS,L10:5,50080508,2939.0,5939.02,9188844.70,-7.31613144,-73.47177411,1011.37
PR-FAS,L70:8,50080508,2939.2,5939.34,9188829.57,-7.31626793,-73.47177257,1011.36
PR-FAS,L2054:45,50080508,2939.4,5939.66,9188814.44,-7.31640444,-73.47177104,1011.34
PR-FAS,L10:9904,50080508,2939.6,5939.97,9188799.30,-7.31654097,-73.47176954,1011.32
PR-FAS,L40:2,50080508,2939.8,5940.29,9188784.16,-7.31667753,-73.47176806,1011.29
PR-FAS,L907:4,50080508,2940.0,5940.60,9188769.02,-7.31681410,-73.47176661,1011.25
PR-FAS,L804:8,50080508,2940.2,5940.91,9188753.88,-7.31695071,-73.47176519,1011.20
PR-FAS,L1089:774,50080508,2940.4,5941.21,9188738.73,-7.31708734,-73.47176378,1011.15

Como podem ver ele segue um padrão, onde temos uma letra que nesse caso é o "L", após temos um valor seguido de ":" um outro valor e terminamos esse campo com "," - PR-FAS,L10:5,50080508

O que eu preciso fazer:

1º - Retirar essa Letra "L" ou qualquer outra que substitua... Isso não é prioridade pois essas letras só podem ser "L", "T" ou "P" então via SED eu consigo retirar do arquivo final.
2º - E retirar o ":" e tudo que vem após ele até a primeira virgula ",".

Original:
PR-FAS,L1089:774,50080508

Esperado:
PR-FAS,1089,50080508

É possível fazer isso de forma automática? Preciso automatizar pois tenho arquivos de até 700MB com a mesma estrutura para consertar.

Desde Já Agradeço a ajuda de todos



Boa tarde Dudu.
Segue sugestão.... Acredito que de para fazer somente com o awk.... mas, por hora é isso . . . .
awk -F '[,:]' '{OFS=",";print $1,$2,$4}' arquivo.txt |sed 's/\,[LTP]/,/' 

EDITADO.
Conforme previsto, somente com awk:
awk -F '[,:]' '{OFS=",";gsub(/[LTP]/, "", $2); print $1,$2,$4}' arquivo.txt 

marcelo oliver

3. Re: Ajuda com Manipulação de Texto. [RESOLVIDO]

Alan Victor
alanvictorjp

(usa Debian)

Enviado em 26/10/2018 - 19:04h

Ou só sed

Faça um backup do arquivo para garantir...

Testes antes
cat teste | sed 's/^\(.*,\)[LTP]\+\([0-9]\+\):[0-9]\+\(,.*\)/\1\2\3/' 


Depois execute
sed -i 's/^\(.*,\)[LTP]\+\([0-9]\+\):[0-9]\+\(,.*\)/\1\2\3/' arquivo.txt 







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts