2012-03-27 4 views
9

私はfile1.csvを含む、ファイルを持っていながら、1に2つのファイルからの行を読む:ループ

This 
is 
some 
text. 

を私は例えば、各ラインを通じてサイクルにwhile read lineを使用しています:

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

私は別のファイルを持っています同一の数のラインを有し、file2.csv

A 
B 
C 
D 

データeac h行は、同じ行番号の最初のファイルのデータに対応します。

  • file2.csvから対応する行を印刷できるように、どのようにwhileループを変更できますか?

答えて

14

別のFDを使用してください。

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

を '; 〜する – Sepero

9

あなたは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

あなたはpasteコマンドを使用することができます読み取りLINE1が&& -u 3 LINE2を読みながら

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