linux命令--查找与统计(grep、awk、sort、uniq、wc)

在做日志分析时或者配置分析时,通常会遇到查找出符合某一条件的行,并统计,主要应用的就是grep、awk、sort、uniq、wc五个命令

1. grep命令

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来

语法格式为:

grep [option] pattern file //pattern 通常可以为正则表达式

常见的参数为:

选项
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示喔!

2.awk命令

  awk命令通常是将所列出的行,根据条件打印出某一列或几列

  常用形式为:awk  -F ':'  'BEGIN {print "name,shell"}  {if($1="root") print $1","$7} END {print "blue,/bin/nosh"}'  

3.sort命令

sort排序原则:sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

sort [optional] filename

常用参数:

-u:去除重复行

-r:默认是升序排序,-r是改为降序

-o:将排序结果写入到源文件

-n:默认是通过ASCII码值排序,但是这时会出现10比2小的情况,-n就是说要以数值进行排序

-k和-t:-k是指定以哪一列进行排序,-t是指定分隔符

举例:

(1)sort -n -t " " -k 2 -k 3 facebook.txt  //人数相同的按照员工平均工资升序排序

(2) sort -n -t ' ' -k 3r -k 2 facebook.txt //按照员工工资降序排序,如果员工人数相同的,则按照公司人数升序排序

(3)sort -t ‘ ‘ -k 1.2 facebook.txt //从公司英文名称的第二个字母开始进行排序

(4)sort -t ‘ ‘ -k 1.2,1.2 -k 3,3nr facebook.txt //只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序

4.uniq命令

uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用。也就是说,为了使uniq起作用,所有的重复行必须是相邻的。

-i   :忽略大小写字符的不同;
-c  :进行计数,即统计该行的重复次数
-u  :显示不存在的行
-d:显示存在重复的行

5.wc  命令

统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
-help 显示帮助信息
--version 显示版本信息


[root@localhost test]# wc test.txt
 7  8 70 test.txt

7 表示行数

8 表示单词数

70  字节数










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章