+ Responder ao Tópico



  1. Fala galera, como estão as coisas?

    Pessoal, me surgiu uma duvida aqui e não sei como fazer..

    ex:

    tenho o arquivo dados.txt, dentro deste arquivo tem as seguintes informações:
    nome: dunha
    tel: 1234-5678
    nome: zeca vallo
    tel: 3322-6548
    nome: tadeu
    tel: 89521-4567
    o que eu quero é ler este arquivo, mas das linhas por vez..

    se eu fizer:

    Código :
    for i in `cat dados.txt`; do
       echo $i;
    done

    a saída será uma linha de cada vez..

    mas quero que tenha opção de trabalhar com as duas linhas por vez...

    alguém consegue refrescar minha mente??

    valeu

  2. Poxa, mas registro multilinha é complicado... tenta assim:

    Código :
    #!/bin/bash
    	arquivo=( `cat $ARQUIVO` );
    	for((i=0;i<${#arquivo[@]};i+=2)); do
    		echo "Elemento $i --> "${arquivo[$i]}"\n"${arquivo[$i+1]}"";
    	done;

    Dá pra melhorar isso aí fazendo com sed, mas pelo horário do meu post, eu nem pesquisei muito. Não cheguei a testar também, mas provavelmente vai resolver seu problema


    Abraços!
    Última edição por xstefanox; 10-03-2007 às 03:55. Razão: Código-fonte com um pequeno defeitinho.



  3. Eu cheguei a fazer um para esse função, abaixo o shell script na íntegra.
    Notar que tem dois echo em comentario, eu chamo de *modo teste*, para ver na tela o que ele pega como L1 e L2.

    ##-----------------------------------------------
    #!/bin/sh

    if [ "$#" = "0" ]; then
    echo -e "\nDigite $0 ArquivoOrigen \n"
    else
    FAZ="1";
    OK="0";
    while read LINHA; do
    if [ $FAZ ]; then
    L1=`echo $LINHA | sed -e 's/\n/ /g'`;
    FAZ="0";
    else
    L2=`echo $LINHA | sed -e 's/\n/ /g'`;
    FAZ="1";
    OK="1";
    fi
    if [ $OK ]; then
    # echo "L1 - $L1";
    # echo "L2 - $L2";
    echo "$L1$L2\n";
    OK="0";
    fi
    done < $1
    ##--------------------------------------------------

  4. Citação Postado originalmente por lucianogf Ver Post
    Fala galera, como estão as coisas?

    Pessoal, me surgiu uma duvida aqui e não sei como fazer..

    ex:

    tenho o arquivo dados.txt, dentro deste arquivo tem as seguintes informações:


    o que eu quero é ler este arquivo, mas das linhas por vez..

    se eu fizer:

    Código :
    for i in `cat dados.txt`; do
       echo $i;
    done

    a saída será uma linha de cada vez..

    mas quero que tenha opção de trabalhar com as duas linhas por vez...

    alguém consegue refrescar minha mente??

    valeu
    Minha sugestão "one line", simplificado:

    sed '/nome/N ; s/\n/ /g' arquivo.txt

    N concatena duas linhas, e as separa por \n (substituido pelo segundo comando do sed)
    pode-se perceber q fiz o endereçamento pelo "nome"
    se vc tiver um padrão de arquivo bem definido, ele pode ser omitido:

    sed 'N ; s/\n/ /g' arquivo.txt

    T+






Tópicos Similares

  1. Script para ler log em tempo real
    Por tomelin no fórum Servidores de Rede
    Respostas: 6
    Último Post: 21-10-2011, 12:37
  2. Respostas: 4
    Último Post: 15-08-2011, 10:35
  3. Scripts para bloqueia o orkut por horario?
    Por mvelton no fórum Redes
    Respostas: 6
    Último Post: 04-08-2007, 20:06
  4. Script para mandar email um por um???
    Por tomelin no fórum Linguagens de Programação
    Respostas: 11
    Último Post: 30-08-2006, 22:23
  5. Script para remoção de linhas
    Por mirror no fórum Linguagens de Programação
    Respostas: 4
    Último Post: 10-08-2006, 21:33

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L