Pular para o conteúdo

Trocar string de um arquivo

Responder tópico
  • Denunciar
  • Indicar

1. Trocar string de um arquivo

Enviado em 12/04/2012 - 13:06h

Pessoal boa tarde!

Estou com o seguinte problema, tenho dois arquivo um de histórico e outro com um dexpara de matriculas.
No histórico tenho o seguinte tipo de linha:

22XX126086|ONL|EL21351|MAR-23-2012 10:23:19|ONL_PASS|MAY-16-2011 12:48:27|ADMIN|0||||2.00|||||||||||||||||||!##!
Preciso trocar está matricula pela a equivalente que se encontra em outro arquivo. Exemplo
22XX126086|22XX2152
a antiga vem primeira e a nova é a segunda.

Fiz o seguinte script:

#!/bin/bash

cat matriculas.txt | while read line
do
# Velha matricula
echo $line | cut-c -|
read str

# Nova matricula
echo $line | cut-c |-
read rpl

# Nome do arquivo
echo "learninghistory.txt"
read files

for i in `ls *$files*`
do
awk '{ sub(/'$str'/,"'$rpl'",$0); print $0}' $i >> temp
mv temp $i
done
done
Porém não está funcionando poderiam me ajudar?

Abraços!

Responder tópico

2. Re: Trocar string de um arquivo

Enviado em 12/04/2012 - 14:47h


Primeira coisa ... acho que o correto das variáveis seria assim:

str=`echo $line | cut -d\| -f1`
rpl=`echo $line | cut -d\| -f1`
files="learninghistory.txt"

3. Re: Trocar string de um arquivo

Enviado em 12/04/2012 - 14:55h

cat matriculas.txt |while read line
do
str=`echo $line | cut -d\| -f1`
rpl=`echo $line | cut -d\| -f1`
files="learninghistory.txt"
sed -i "s/^$str/$rpl/" *$files*
done

4. Re: Trocar string de um arquivo

Enviado em 12/04/2012 - 15:28h

fdmarp escreveu:

cat matriculas.txt |while read line
do
str=`echo $line | cut -d\| -f1`
rpl=`echo $line | cut -d\| -f1`
files="learninghistory.txt"
sed -i "s/^$str/$rpl/" *$files*
done
Muito obrigado! Só mais um dúvida:
str=`echo $line | cut -d\| -f1`
rpl=`echo $line | cut -d\| -f1`
irão pegar o mesmo valor correto? Meu arquivo de matriculas é do seguinte padrão 22XX123136|22XX98636 sendo que iremos procurar o 22XX123136 e trocar ele por 22XX98636.

Abraços!


5. Re: Trocar string de um arquivo

Enviado em 12/04/2012 - 16:08h

falha minha

rpl=`echo $line | cut -d\| -f2`

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder