工作中有这样的小需求,将mongodb的库表导出,分析用户表的用户名字段提取,生成文件。
读取用户列表,然后和每个用户的xml文件比较,读取字段type字段大于0的用户,重新生成一个新用户列表。
先看第一部分,导出mongodb库表,库名:app_dict, 表名:users, 端口:25000这个是mongos的端口 ,mongoexport是mongodb自带的工具,代码如下:
/home/app/bin/mongoexport --host 10.11.1.105 --port 25000 -d app_dict -c users -q='{}' -f id -o /home/app/all.lst
cat /home/app/all.lst|awk -F'001_' '{print $2}'|awk -F'"' '{print $1}' > /home/app/all.1.lst
rm -f /home/app/all.lst
再看看第二部分:
rule="000001"
enow=`date "+%Y%m%d000000"`
echo $enow
cat all.1.lst|while read line
do
result=`cat /home/app/bin/$line.xml|grep remindType`
if [ "$result" == "" ]; then
echo $line" disabled no remindtype"
else
#echo -e $line" "$result
echo $line" ""$result"
type=`echo $result|awk -F'<' '{print $2}'|awk -F'>' '{print $2}'`
if [[ "$type" > 0 ]]; then
echo $line" enable"
echo $line" "$enow" "$rule >>/home/app/flter_user1.lst
#echo $result" "$enow" "$rule >/home/app/var/custom_users/flter_user.lst
else
echo $line" ""disable type=0 "$result1
fi
fi
done
这段代码主要注意的几个点如下:
- 字符串比较:
if [ "$result" == "" ];
- 数值比较
if [[ "$type" > 0 ]]
其他的没有什么了。又可以快乐玩耍了。