2012-03-27 16 views
9

Mam plik, file1.csv zawierającą:Czytanie wierszy z dwóch plików w jednej pętli while

This 
is 
some 
text. 

używam while read line aby przechodzić każdej linii, np:

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

mam inny plik z identycznym numerem linii, zwany file2.csv:

A 
B 
C 
D 

EAC dane Wiersz h odpowiada danym z pierwszego pliku o tym samym numerze wiersza.

  • Jak zmodyfikować pętlę while tak, aby można było wydrukować odpowiednią linię od file2.csv?

Odpowiedz

14

Użyj innego FD.

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

'podczas odczytu line1 && czytać -u 3 line2; do ' – Sepero

9

Można spróbować z narzędziem paste:

$ 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

Można użyć polecenia 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