daemonio
(usa Slackware)
Enviado em 23/10/2014 - 12:03h
Os arquivos tem o mesmo número de linhas? Se tiver uma correspondência 1 para 1 fica fácil, isso é, lê a primeira linha dos dois arquivos simultaneamente, depois a segunda linha, terceira, etc.
OIFS=$IFS; IFS='@'
while read LINE_ARQ1 LINE_ARQ2
do
echo $LINE_ARQ1 $LINE_ARQ2
done < <(paste -d '@' arquivo1.txt aquivo2.txt)
IFS=$OIFS
salvamos o conteúdo de IFS e setamos ele pra arroba. O '@' será o separador entre as linhas do arquivo e ele não pode existir nos dois arquivos. O paste faz o papel de juntar a primeira linha de um arquivo com a primeira linha do segundo, etc.
Usando sua mesma sintaxe, pode-se usar o exec para tratar o segundo arquivo usando descritor:
#!/bin/bash
exec 3<'arquivo2.txt'
while read line
do
echo $line",,,,,,,,,,,,,,,"$(head -n 1 <&3)
done < 'arquivo1.txt'
a cada leitura do arquivo1.txt, o head irá ler uma linha do arquivo2.txt. Como estamos trabalhando com descritores, cada leitura nele irá incrementar o ponteiro de leitura, por isso cuidado com essa segunda abordagem (ex: se usar tail já não funciona porque o arquivo ja será lido todo na primeira passada)
SEria isso +/- isso?
t+