起源
排查一个bug,又不想写代码,就直接使用linux命令和shell脚本来代替吧。
过程
grep命令提取关键行
grep 'KEY_PART' FILE_PATH > DEST_FILE
or
egrep 'REG_EXP' FILE_PATH > DEAT_FILE
这样先把关键行拿出来放到特定文件中
这次用的是
#把result文件中含有'key=login'的行放入login.txt文件中
grep 'key=login' result > login.txt
把关键行中的关键子串提取出来
写了一个脚本:readkey.sh,用正则表达式提取关键子串
#!/bin/bash
file=$1
exp=$2
for line in $(cat $file)
do
a=$(expr $line : $exp)
echo $a
done
用法:sh readkey.sh FILE_PATH REG_EXP
这次用的是
#把id=(\d)*的子串拿出来放到login_id.txt中
sh readkey.sh login.txt '.*\(id=\{0,20\}\).*' > login_id.txt
计算文件中包含某一关键子串的行数
grep -c 'KEY_PART' FILE_PATH
这次用的是
#计算login.txt中有多少行包含key=login
grep -c 'key=login' login.txt
这样就算出了登陆次数
计算文件中去重后的行数
sort FILE_PATH | uniq -i | wc -l
因为uniq只能去掉相邻行的重复行,因此先用sort排序再去重就能全部去重
wc -l用于显示去重后的行数
这次使用的是
#计算有多少个不同的id
sort login_id.txt | uniq -i | wc -l
这样就计算出了有多少人登录
总结
偷懒使人进步 学一点是一点。