一道shell命令笔试题

有一个日志文件access.log ,日志文件的格式: 127.0.0.1 - - [11/Jan/2013:15:26:19 +0800] "GET / HTTP/1.1" 403 202

用shell命令,计算出文件中每个ip访问的记录数 :

       cat  access.log |  awk -F " " '{print $1}' | sort -rn | uniq -c 

 

一、Sort命令

sort [OPTION]… [FILE]…

对文件按指定的域进行排序

常用选项:
  1. -c: 检测文件是否已经排序
  2. -m: 将两个已经排序的文件进行合并
  3. -u: 在排序过程中,删除重复的行
  4. -o: 保存排序后的文件
  5. -t: 域分隔符,默认为空格和tab
  6. -n: 指定待排序的域为数字类型
  7. -r: 逆序排序,默认为正向排序
  8. -b: 按域排序时忽略第一个空格
  9. +n: 按照第n个域进行排序,域从第0个开始计数
  10. +m.n: 按照第m个域的第n个字符开始开始排序
  11. -k: 按照第k个域进行排序,域从第1个开始计数
常见的用法例子:
sort  -o output.txt  your_file.txt  #对文件按第一域进行排序,将排序结果保存到output.txt
 
sort -t: -r +2n your_file.txt #对文件按照第2个域进行逆向排序,第二个域为数字类型,同时分割符为:
 
df | sort -b -r -k5  #按照磁盘的占用率从高到底进行排序输出

二、uniq命令

uniq [OPTION]… [INPUT [OUTPUT]]

从文件中去除或删除重复的行,在功能上和sort -u类似

常用选项:
  1. -u: 只显示不重复的行
  2. -d: 只显示重复的行
  3. -c: 打印每一行出现的次数
  4. -fn: 忽略前n个域
常用的用法例子:
uniq sort_file.txt #删除文件中重复的行
 
uinq -c sort_file.txt  #显示每行出现的次数
 
uinq -d sort_file.txt  #只显示出现次数>=2的行

 

posted @ 2013-01-13 19:59  风去无痕  阅读(201)  评论(0编辑  收藏  举报