2017-03-09 25 views
-1

こんにちは皆私はゲームにはとても新しいので、私の質問はおそらく単純ですが、私は長い間このことに固執しています。私は、ファイルの2つのリストから2つのファイルを1行ずつ同時に処理したい。2つのファイルから1行ずつ読み込み、同時に処理する

read file1 && read file2; 
    do 
    echo "$file1 and $file2" 
    done 

エコーはもちろん、スクリプトの残りの部分だけspaceholderですが、私は、読み出し動作のうちのいずれかの変数を取得するために管理していませんでした:

私は現在しようとしています。

+0

http://stackoverflow.com/a/15461247/1030675 – choroba

+0

あなたは 'while'キーワードがありません。 – chepner

答えて

-1
LINECOUNTER=1 
while true; do 
    FILE1INPUT="$(sed -n "${LINECOUNTER}p" file1.txt)" 
    FILE2INPUT="$(sed -n "${LINECOUNTER}p" file2.txt)" 
    echo "$FILE1INPUT and $FILE1INPUT" 
    let LINECOUNTER=LINECOUNTER+1 
done 
  • LINECOUNTER変数はちょうど次の出力先のラインを記憶することです。
  • 次に、$(sed ...)のsedコマンドの出力を 変数FILE1INPUTに割り当てます。このsedコマンドはfile1.txtからLINECOUNTERによって と指定された1行だけを読みます。
  • LINECOUNTERが1だけインクリメントされるので、次回のsedは で実行され、次の行が返されます。

もちろん、whileループが終了するための適切な条件が必要です。

+1

各ファイルの行ごとに 'sed'を実行する理由はありません。 – chepner

1

2つのファイルから同時に読み込むには、2つの別個のファイル記述子が必要です。そのうちの1つを標準入力にすることができます。

while IFS= read -r line1 && IFS= read -r line2 <&3; do 
    echo "File 1: $line1" 
    echo "File 2: $line2" 
done < file1 3< file2 
+1

これはbashなので、 'read -u3 line2'も使うことができます –

関連する問題