Copiar linha para arquivo novo [RESOLVIDO]

1. Copiar linha para arquivo novo [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 03/01/2012 - 15:02h

Saudações,

Tenho 1 arquivo texto com varios parâmetros de várias máquinas. Os parâmetros são os mesmos para várias máquinas, porém cada configuração é diferente. O que eu preciso no momento é separar esse único arquivo em 1 arquivo por máquina.

Estou fazendo isso através de um while varrendo o arquivo linha a linha e concatenando esse resultado em um arquivo novo. O que eu preciso agora é um comando que me retorne, de acordo com a linha que eu indicar para ele, toda a linha desse arquivo de texto. Alguém tem alguma idéia de como fazer isso??

Abraços,
Diego Tavares


  


2. Re: Copiar linha para arquivo novo [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 03/01/2012 - 15:15h

Especificando melhor, eu quero pegar, por exemplo, APENAS, mas TODA, a linha 7 de um arquivo de 11 linhas por exemplo.


3. Re: Copiar linha para arquivo novo [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 03/01/2012 - 15:20h

Tem como vc postar um trecho do arquivo?


4. Re: Copiar linha para arquivo novo [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 03/01/2012 - 15:23h

Eu to usando esse como teste, mas seria assim:

"BSC = BSCRJ01
Par1 = 10
Par2 = 20
Par3 = 30
BSC = BSCRJ02
Par1 = 30
Par2 = 40"

E o que eu preciso seria 2 arquivos.

Arquivo1:
"BSC = BSCRJ01
Par1 = 10
Par2 = 20
Par3 = 30"

Arquivo2:
"BSC = BSCRJ02
Par1 = 30
Par2 = 40"

A minha intenção é criar cada arquivo com os nomes das BSCs, mas isso é problema p/outra hora. rs


5. Re: Copiar linha para arquivo novo [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 03/01/2012 - 15:30h

as aspas fazem parte do arquivo?



6. Re: Copiar linha para arquivo novo [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 03/01/2012 - 15:31h

Não. Seria só o que está entre elas.


7. Re: Copiar linha para arquivo novo [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 03/01/2012 - 15:42h

cat seu_arquivo | while read line
do
controle=`echo $line | awk '{ print $1 }'`
if [ "$controle" == "BSC" ]; then
arquivo=`echo $line | awk '{ print $NF }'`
fi
echo "$line" >> $arquivo
done


ou

cat seu_arquivo | while read line
do
controle=`echo $line | cut -c 1-3`
if [ "$controle" == "BSC" ]; then
arquivo=`echo $line | awk '{ print $NF }'`
fi
echo "$line" >> $arquivo
done


8. Re: Copiar linha para arquivo novo [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 03/01/2012 - 15:52h

agora pra imprimir a linha x, uma das opções é com o sed.

ex.:

linha=3; sed -n "$linha p" arquivo_entrada > arquivo_saida



9. Re: Copiar linha para arquivo novo [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 03/01/2012 - 16:02h

Testei aqui e deu certo!



cat arquivo.txt | while read line
do

echo "$line" | grep ^BSC &> /dev/null
if [ $? -eq 0 ]; then

new_file=`echo "$line" | grep ^BSC | cut -d= -f2 | sed 's/ //g'`

else

echo $line >> $new_file.txt

fi

done







10. Re: Copiar linha para arquivo novo [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 03/01/2012 - 16:05h

Neste exemplo acima, o nome dos arquivos serão com o nome do "BSC":

[root@Servidor1 tmp]# cat BSCRJ02.txt
Par1 = 30
Par2 = 40

[root@Servidor1 tmp]# cat BSCRJ01.txt
Par1 = 10
Par2 = 20
Par3 = 30



11. Re: Copiar linha para arquivo novo [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 03/01/2012 - 16:11h

Galera, agradeço muito a ajuda de vcs!!

Preferi utilizar o sed dentro de um while por ser algo mais fluido dentro do meu raciocío. Estou mandando o código abaixo:

while [ $VarreArquivo -lt ${BSCLinha:2:1} ]
do
sed -n "$VarreArquivo p" BSC_Teste/BSCs.txt
(( VarreArquivo++ ))
done > BSC_Teste/BSC_${BSCNome:0:7}.txt

Como eu terei várias BSCs no arquivo, eu pretendo fazer um for para varrer todo o arquivo original e criar outros arquivos com os diferentes nomes e cada um com sua BSC.

Muito obrigado!!
Abraços






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts