2017-03-09 42 views
-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命令只讀取一行,由LINCEOUNTER從file1.txt指定 。與file2.txt一樣
  • 然後LINECOUNTER加1,這樣下一次sed是 執行下一行就返回了。

當然,需要一個適當的條件讓while循環結束。

+1

沒有理由爲每個文件的每一行運行'sed'。 – chepner

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' –

相關問題