¥
可以直接进行比较时间字符串,按照字符串的字典序。
¥
机器码首位为“0、1、2”的数量,看到一个简便方法:grep -c '^[0-2]'
¥
awk如何取第一列
cat abc.txt | awk -F '' '{if($1=="d"||$1==1||$1=="c") print $0}'
¥
替换文件夹下包含字符串的文件
sed结合grep
¥
例:要将目录/www下面所有文件中的old都修改成new,这样做:
sed -i "s/old/new/g"
¥
一行连续输入多列
cat ie*2012122911 | awk ' { for(i=13;i<=(NF-1);i++) printf $i""FS; print "" }' |
¥
类型数量计算
cat data/log_config_20121217newsemini |grep Id=2837 |awk -F 'Type=' '{print $2}' | awk -F '[ &]' '{a[$1]+=1}END{for(i in a){print i,a[i]}}' |sort -k 2 -rn
¥
计算版本号的用户数并进行排序:
awk -F 'v=' '{print $2}' | awk -F '[& ]' '{a[$1]+=1}END{for (i in a){print i,a[i]}}' | sort -k2 -rn
¥
rpm -qa | grep redis | xargs rpm -ql
计算机器码的数量
cat uid_c.exe | > uid_c
¥
计算时间和对应的机器码,多个机器码只保留第一次出现的机器码和时间
cat desktopbar_exit.txt | awk '{print $2,$5}' | sed 's/&h=/ /' | sed 's/&r=/ /' | awk '{print $1,$3}' > exit_time_uid.txt
¥
得到的文件格式如下:
[12/Nov/2012:01:28:50 022F0A61F197A0C53D3176BFEA32F339
[12/Nov/2012:08:20:22 023D1164922CA28D7D2D6354CE3E2804
[12/Nov/2012:00:58:28 024C6604A7FD1FEFA55AC6C9818C7917
用以下命令来进行操作:
sort -k2 run_time_uid.txt | uniq -f 1
对第二列机器码进行排序,然后忽略掉第一列的时间,只保留一个机器码,这样就只保留时间最早的那个机器码和对应的时间了。
¥
根据版本找到渠道号的命令:
cat startup_log_*| grep 'v=0.2808' | awk -F 'r=' '{print $2}' | awk -F '&' '{a[$1]+=1}END {for(i in a) {print i,a[i]}}' | sort -k2 -rn>aa.txt
根据渠道号找到版本号的命令:
cat startup_log_* | grep r=6164 | awk -F 'v=' '{print $2}' | awk -F '&' '{a[$1]+=1}END {for(i in a) {print i,a[i]}}'| sort -k2 -rn > aa.txt
¥
查询大于3.2版本小于3.2.0.4716版本的所有版本数
ls startup_uid_uniq_initiative_7days_3.2.* | awk -F '.' '{if($NF<4716) print $0}'
¥
计算页面的uv:
cat officialweb_log_* | grep 'pl=Ftg%2Fmkt.html' | awk -F '&u=' '{print $2}' | awk -F '[& ]' '{print $1}' | sort | uniq | wc -l
计算页面的uv:
¥
find /root/workspace/workspace/loglib0229/* | xargs grep "山东"
1)是按顺序记录的 ,比如u=后边是r=
求交集:grep -F -f inst_uid_uniq startup_uid_uniq_initiative | sort | uniq >common_new_initiative_log
求差集:grep -F -v -f common_new_initiative_log startup_uid_uniq_initiative| sort | uniq > uid_uniq_initiative_old
求交集的个数:grep -F -f inst_uid_uniq startup_uid_uniq_initiative | wc -l
uniq必须是两个已经排序过的文件吗?
sort 的文件对内存有大小限制吗?
2)
将三个文件合并,去掉重复的记录,归并,求并集
cat file0.txt file1.txt file2.txt |awk '{a[$1]}END{for(l in a){print l}}'|wc -l
¥
cmd = "cat " + accumulation_startupandexit_file_today + " | awk -F ':' 'BEGIN{SUM1=0;SUM2=0}{SUM1+=$1;SUM2+=$2}END{if(SUM1==0){print 0}else{print (SUM1-SUM2)/SUM1}}'"
¥
shell按年月日显示日期:`date +%Y%m%d`