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 显示版本信息
1
2
[root@localhost test]# wc test.txt
7 8 70 test.txt
  • 7 表示行数
  • 8 表示单词数
  • 70 字节数
坚持原创技术分享,您的支持将鼓励我继续创作!