使用awk+sort+uniq进行文本分析

1、uniq命令
uniq - report or omit repeated lines
介绍:uniq对指定的ASCII文件或标准输入进行唯一性检查,以判断文本文件中重复出现的行。常用于系统排查及日志分析
命令格式:
uniq [OPTION]... [File1 [File2]]
uniq从已经排序好的文本文件File1中删除重复的行,输出到标准标准输出或File2。常作为过滤器,配合管道使用。
在使用uniq命令之前,必须确保操作的文本文件已经过sort排序,若不带参数运行uniq,将删除重复的行。
常见参数:
-c, --count              prefix  lines  by  the  number of occurrences 去重后计数
2、实战演练

测试数据:

[[email protected] ~]# cat uniq.txt 
10.0.0.9
10.0.0.8
10.0.0.7
10.0.0.7
10.0.0.8
10.0.0.8
10.0.0.9

a、直接接文件,不加任何参数,只对相邻的相同内容去重:

[[email protected] ~]# uniq uniq.txt 
10.0.0.9
10.0.0.8
10.0.0.7
10.0.0.8
10.0.0.9

b、sort命令让重复的行相邻(-u参数也可完全去重),然后用uniq进行完全去重

[[email protected] ~]# sort uniq.txt 
10.0.0.7
10.0.0.7
10.0.0.8
10.0.0.8
10.0.0.8
10.0.0.9
10.0.0.9
[[email protected] ~]# sort -u uniq.txt 
10.0.0.7
10.0.0.8
10.0.0.9
[[email protected] ~]# sort uniq.txt|uniq
10.0.0.7
10.0.0.8
10.0.0.9

c、sort配合uniq去重后计数

[[email protected] ~]# sort uniq.txt|uniq -c
      2 10.0.0.7
      3 10.0.0.8
      2 10.0.0.9

3、企业案例
处理一下文件内容,将域名取出并根据域名进行计数排序处理(百度和sohu面试题)

[[email protected] ~]# cat access.log 
http://www.etiantian.org/index.html
http://www.etiantian.org/1.html
http://post.etiantian.org/index.html
http://mp3.etiantian.org/index.html
http://www.etiantian.org/3.html
http://post.etiantian.org/2.html

解答:
分析:此类问题是运维工作中最常见的问题。可以演变成分析日志,查看TCP各个状态连接数,查看单IP连接数排名等等。

[[email protected] ~]# awk -F ‘[/]+‘ ‘{print $2}‘ access.log|sort|uniq -c|sort -rn -k1
      3 www.etiantian.org
      2 post.etiantian.org
      1 mp3.etiantian.org
时间: 2024-10-16 01:06:51

使用awk+sort+uniq进行文本分析的相关文章

awk sort uniq

命令: grep -ri '23/Mar/2017'  access.log  | awk -F"|" '{print $2}' | sort -r |uniq -c | sort -k1,1nr 统计log中各ip访问的次数 grep -ri '23/Mar/2017'  access.log  | awk -F"|" '{print $2}' | sort |uniq |wc -l 统计log中独立ip量 sort:  对单词进行排序 uniq -c:  显示唯

[linux] grep awk sort uniq学习

grep的-A-B-选项详解grep能找出带有关键字的行,但是工作中有时需要找出该行前后的行,下面是解释1. grep -A1 keyword filename找出filename中带有keyword的行,输出中除显示该行外,还显示之后的一行(After 1)2. grep -B1 keyword filename找出filename中带有keyword的行,输出中除显示该行外,还显示之前的一行(Before 1)3. grep -1 keyword filename找出filename中带有k

shell 文本处理的几个命名sed,awk,sort,uniq,cut

文本处理 Cat命令 1)  拼接文件:纵向拼接,不是横向拼接 [email protected]:~# cat list list2 line2 line3 line4 line5 line5 line6 line7 total 32K lrwxrwxrwx 1 root root   12 Jan  4 11:30 backup -> /data/backup -rw-r--r-- 1 root root   46 Apr  1 13:18 list -rw-r--r-- 1 root ro

7、Shell工具 cut sed awk sort

1 cut cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的.cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段输出. 1.基本用法 cut [选项参数]  filename 说明:默认分隔符是制表符 2.选项参数说明 表1-55 选项参数 功能 -f 列号,提取第几列 -d 分隔符,按照指定分隔符分割列 -c 指定具体的字符 cut -c 2,3,4     cut -c 2-8   2-8之间的字符 3.案例实操 (0)数据准备 [[email protect

linux基础篇07,linux文本处理cat more less head tail sort uniq grep cut jion sed awk

文本处理cat more less head tail sort uniq grep cut jion sed awk ################################################ cat:concatenate files and print on the standard output 显示文件内容到标准输出(显示器) -e:显示最后一个结尾的字符 -n:显示行编号 [[email protected] ~]# cat -n /etc/shells 1  

05,文本处理cat more less head tail sort uniq wc tr grep cut jion sed awk ok

文本处理cat more less head tail sort uniq grep cut jion sed awk ################################################ cat:concatenate files and print on the standard output 显示文件内容到标准输出(显示器) -e:显示最后一个结尾的字符 -n:显示行编号 [[email protected] ~]# cat -n /etc/shells 1  

Linux sort uniq awk head 完成访问日志统计排序功能

我们开发时候经常会统计一些访问日志,访问日志中的url是海量的,并且好多是重复内容.以url为例,统计url中出现频率次数前5的url,并按出现次数的降序排序. linux命令:cat url.log | sort | uniq -c |sort -n -r -k 1 -t   ' ' | awk -F  '//'  '{print $2}' 现在来一一分析这些命令组合的含义. 0)访问日志样例 1) cat  t1.log 表示对data文件中的内容进行排序.sort命令是对于每一行的内容根据

awk、uniq、sort三个命令的基本用法

今天对awk.uniq.sort三个命令做了基础功能的学习,这里自己记录一下: 1.awk(数据处理工具,将一行分割成多个"字段"来处理) awk -F '文本切割符''{处理过程}' 文件名称 如:cat /ect/passwd | awk -F ':' '{print $1}'   #以:分割,打印第一列的数据:如果为$0表示整个文件内容 cat /etc/passwd | awk -F ''BEGIN {print "begin,goto"} {print $

文本处理命令- cat more less cut wc sort uniq

文本处理命令 cat more less cut wc sort uniq 1.cat  cat主要功能:1.一次显示整个文件. cat filename2.从键盘创建一个文件. cat > filename   (只能创建新文件,不能编辑已有文件). 1 [[email protected] ~]$ cat > test.txt 2 this is a test for cat command.^[[D 3 a 4 b 5 cc 6 de 其中^[[D是向左的箭头,本想回退一格编辑,但很可惜