我有兩個文件,一個帶17k線,另一個帶4k線。我想將位置115與第二個文件中每行的位置125進行比較,如果匹配,則將第一個文件中的整行寫入新文件。我想出了一個解決方案,我使用'cat $ filename |'來讀取文件同時閱讀LINE'。但需要大約8分鐘才能完成。還有沒有其他方式像使用'awk'來減少這個過程時間。awk與讀線的比較線條
我的代碼
cat $filename | while read LINE
do
#read 115 to 125 and then remove trailing spaces and leading zeroes
vid=`echo "$LINE" | cut -c 115-125 | sed 's,^ *,,; s, *$,,' | sed 's/^[0]*//'`
exist=0
#match vid with entire line in id.txt
exist=`grep -x "$vid" $file_dir/id.txt | wc -l`
if [[ $exist -gt 0 ]]; then
echo "$LINE" >> $dest_dir/id.txt
fi
done
使用awk,你可以用'NR'作爲線的數量。這樣你可能會節省時間。 – fedorqui 2013-04-24 15:39:33