2016-06-24 190 views
1

我有一個名爲「test_file1」的文件。我想讀取該文件的每一行,並將其寫入另一個名爲「test_file2」的文件。這兩個文件都在同一個目錄中。逐行讀取並寫入另一個文件shell腳本

我試圖

#!/bin/sh 
# My first Script 
echo "Hello World!" 
file=$(<test_file1.txt) 
echo "Test" >> test_file2.txt 
while IFS= read -r line;do 
    echo -e "legendary" >> test_file2.txt 
    echo "$line" >> test_file2.txt 
done <"$file" 
echo "completed" 

劇本寫道:「測試」到test_file2.txt但不寫「傳奇」或test_file1行成test_file2。

有人可以請幫忙。

謝謝。

回答

1

只需直接使用該文件,而不是先讀取數組;要做到這一點的改變,你
done <"$file"done < "test_file1.txt"

#!/bin/sh 
# My first Script 
echo "Hello World!" 
echo "Test" >> test_file2.txt 
while IFS= read -r line;do 
    echo -e "legendary" >> test_file2.txt 
    echo "$line" >> test_file2.txt 
done < "test_file1.txt" 
echo "completed" 
+0

DAXaholic嗨, 謝謝。現在工作正常。 –

+0

在完成之後執行單個重定向比在循環內重複打開和關閉文件要高效得多。更好的辦法是用一個簡單的Awk腳本替換它;讀取和寫入這樣的行的shell循環通常是反模式。 – tripleee

+0

當然,編寫awk腳本會更有效率 - 在C中編寫本地應用程序會更有效率:) 如果此腳本要處理數千行,那麼我同意並且可能應該對其進行重構。在這種情況下,我假設(bc缺乏相關信息)沒有這樣嚴格的性能限制,因此恕我直言,最好向提問者展示他自己的代碼的失敗部分,而不是給他一個完整的新代碼片段(甚至可能在一種不同的語言),這可能很難理解。這就是說,儘管如此,額外的筆記! – DAXaholic

相關問題