记一次Linux文本处理

起源

排查一个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

这样就计算出了有多少人登录

总结

偷懒使人进步 学一点是一点。

猜你喜欢

转载自blog.csdn.net/cl_yd/article/details/50663185