2012-03-27 17 views
9

Tengo un archivo, file1.csv que contiene:líneas de lectura de dos archivos en un bucle while

This 
is 
some 
text. 

estoy usando while read line para pasar por cada línea, por ejemplo:

while read line; do 
    echo $line 
done < file1.csv 

tengo otro archivo , con un número idéntico de líneas, llamado file2.csv:

A 
B 
C 
D 

La EAC datos La línea h corresponde a los datos en el primer archivo del mismo número de línea.

  • ¿Cómo puedo modificar el ciclo while, de modo que pueda imprimir la línea correspondiente desde file2.csv?

Respuesta

14

Utilice otro FD.

while read line; do 
    if ! read -u 3 line2 
    then 
    break 
    fi 
    echo "$line***$line2" 
done < file1.csv 3< file2.csv 
+4

'while lectura línea 1 && leer -u 3 línea 2; hacer' – Sepero

9

Usted podría tratar con el paste utilidad:

$ cat one 
this 
is 
some 
text 
$ cat two 
1 
2 
3 
4 
$ while read a b ; do echo $a -- $b ; done < <(paste one two) 
this -- 1 
is -- 2 
some -- 3 
text -- 4 
8

Usted puede utilizar el comando paste:

$ paste -d, file{1,2}.csv | while IFS=, read x y; do echo "$x:$y"; done 
This:A 
is:B 
some:C 
text.:D 
Cuestiones relacionadas