我有两个文件,一个带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