shell脚本应用

解析乱的日志文件到临时文件中,然后用awk
 1004  cd /usr/local
 1005  ll
 1006  cd pttmsg/
 1007  ll
 1008  cd msgbin-2/
 1009  ll
 1010  cd proxy
 1011  ll
 1012  cd log
 1013  ll
 1014  tail -1000 proxy_sub0_20160107.log 
 1015  grep '===ret' proxy_sub0_20160107.log 
 1016  grep '===ret' proxy_sub0_20160107.log > test.log
 1017  cat test.log 
 1018  grep '~time' proxy_sub0_20160107.log > test.log
 1019  grep '~time' proxy_sub0_20160106.log > test.log
 1020  tail -1000 proxy_sub0_20160107.log 
 1021  tail -1000 proxy_sub0_20160106.log 
 1022  grep '~time' proxy_sub0_20160106.log > test.log   先格式化整理文件到test.log
 1023  cat test.log 
 1053  cat test.log | awk -F '<I>' '{print $2}'
 1054  cat test.log | awk -F '<I>' '{print $2}' > ceshi.log   最后格式化整理为需要的文件
 1055  cat ceshi.log 
scp -r root@172.16.1.21:/usr/local/pttmsg/msgbin-2/proxy/log/proxy_sub0_`date '+%Y%m%d'`.log ./log/    远程复制文件到当前服务器目录
 
-------------------------------
ssh_host="root@172.16.1.40"   
remote_gfile="/usr/local/pttmsg/msgbin-3/groupcall/log/gcall_sub0_${yestime}.log"
#记录临时群聊时长到用户通话时长日志文件中
if ssh $ssh_host test -e $remote_gfile;        #判断远程服务器是否有该文件
-----------------------------
 
#line='ssrc:875640674' 
#cat $gnewfile | grep $line #筛选查找
 
#cat $gnewfile | awk '!x[$0]++'   #去除文件中重复的数据
 
#cat $gnewfile | grep $line | head -1  #获取第一行数据
 
#cat $gnewfile | awk 'END {print}'       #获取最后一行
 
#cat $gnewfile | awk -F ':' '{print $NF}'   #获取每行的最后一个数据
 
sql="select count(*) as count from vec_pt_useractive where time='$tmptime';"
res=$(mysql -h${host} -p${port} -u${dbuser} -p${dbpsw} ${dbname} -e "${sql}")   #接收查询的结果
res0=($res)     #转化为数组
 

[rocrocket@rocrocket programming]$ cat facebook.txt
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4

这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。

那么我想以水果数量来排序,也就是以第二列来排序,如何利用sort实现?

幸好,sort提供了-t选项,后面可以设定间隔符。(是不是想起了cut和paste的-d选项,共鸣~~)

指定了间隔符之后,就可以用-k来指定列数了

sort -n -k 2 -t : facebook.txt
posted @ 2016-07-05 17:54  星希望  阅读(192)  评论(0编辑  收藏  举报