直接上shell脚本
#!/bin/bash
if [ $# -eq 3 ]; then
userFile=$1
resultFile=$2
targetFiles=$3
startNano=`date +%s%N`
for user in `cat ${userFile}`
do
if [ ${#user} -gt 0 ]; then
record=`grep "${user}" ${targetFiles} | tail -n1 | cut -d" " -f1,2`
echo "${user}:${record}" >> ${resultFile}
else
echo "读取的内容为空字符"
fi
done
endNano=`date +%s%N`
echo "cost `expr \( ${endNano} - ${startNano} \) / 1000000`ms"
echo "${resultFile}中的记录数为:`cat ${resultFile} | wc -l`"
else
echo "执行该shell必须三个参数,参数1:检索条件文件;参数2:结果接收文件;参数3:被检索的文件";
fi
以上的脚本是在指点的文件中进行内容检索,并将检索到的内容写入文件中。
3G的文本文件检索一次大概需要3s左右的时间,如果userFiles中的数据行较多的话,执行耗时是:行数*3s。
这个脚本是单线程执行的,有兴趣的同学可以考虑通过多线程的方式来缩短执行时间。
转载于:https://blog.51cto.com/mymind/1329985