[sh]uniq-sort-awk
题目:[百度搜狐面试题] 统计url出现次数
oldboy.log http://www.etiantain.org/index.html http://www.etiantain.org/1.html http://post.etiantain.org/index.html http://mp3.etiantain.org/3.html http://www.etiantain.org/1.html http://post.etiantain.org/2.html uniq - report or omit repeated lines
去除相邻的重复的行
[root@moban data]# cat ip.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
[root@moban data]# uniq ip.txt
10.0.0.9
10.0.0.8
10.0.0.7
10.0.0.8
10.0.0.9
让重复的行相邻
[root@moban data]# sort ip.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
[root@moban data]# sort ip.txt |uniq
10.0.0.7
10.0.0.8
10.0.0.9
[root@moban data]# sort -u ip.txt
10.0.0.7
10.0.0.8
10.0.0.9
-u, --unique
with -c, check for strict ordering; without -c, output only the
first of an equal run
[root@moban data]# sort ip.txt |uniq -c
10.0.0.7
10.0.0.8
10.0.0.9
uniq:-c 计数
-c, --count
prefix lines by the number of occurrences
[root@moban data]# awk -F / '{print $3}' url.txt
www.etiantain.org
www.etiantain.org
post.etiantain.org
mp3.etiantain.org
www.etiantain.org
post.etiantain.org
解答:
[root@moban data]# awk -F / '{print $3}' url.txt|sort|uniq -c
mp3.etiantain.org
post.etiantain.org
www.etiantain.org
降序排序:
法1:
[root@moban data]# awk -F / '{print $3}' url.txt|sort|uniq -c|sort -r
www.etiantain.org
post.etiantain.org
mp3.etiantain.org
法2:cut
[root@moban data]# cut -d / -f3 url.txt |sort|uniq -c|sort -r
www.etiantain.org
post.etiantain.org
mp3.etiantain.org
优化:
[root@moban data]# cut -d / -f3 url.txt |sort -r|uniq -c
www.etiantain.org
post.etiantain.org
mp3.etiantain.org
排序:
sort –rn
[root@lanny test]# cat ip.txt
10.0.0.9 o
10.0.0.9 a
10.0.0.8 z
10.0.0.8 k
10.0.0.8 c
10.0.0.7 n
10.0.0.7 f
对第二列排序
-t 分隔符 –k 第几列
[root@lanny test]# sort -t " " -k2 ip.txt
10.0.0.9 a
10.0.0.8 c
10.0.0.7 f
10.0.0.8 k
10.0.0.7 n
10.0.0.9 o
10.0.0.8 z
分隔符默认是空格,因此 –t 可以省略
[root@lanny test]# sort -k2 ip.txt
[root@lanny test]# sort -rk2 ip.txt #倒序排列
-t 表示按点号分隔域
类似awk的-F,取字段用$ $2或cut的-d,取字段f数字.
sort –runtk
-r 倒序 –u 去重 –n数字 -t分隔 –k 第几行
uniq –c
题目:要求对ip的第三列降序排序,如果第三列相同,那就第四列按照降序排序.
[root@lanny test]# cat arp.txt
192.168.0.3 :e0:4c::d2:a5
192.168.2.2 :e0:4c::d1:7d
192.168.3.7 ::bf:::
192.168.3.5 :e0:4c::a3:
192.168.2.4 :0a:eb:6d::
192.168.1.2 ::6c:::
192.168.4.9 :0a:e6:b5:d1:4b
192.168.0.4 :0e:1f:::
192.168.6.7 :1d:::b2:e1
192.168.8.4 ::6c::5d:
192.168.1.22 :e0:4c::ce:
192.168.0.15 :e0:4c::d7:0e
192.168.2.9 :e0:4c::d1:8b
192.168.0.122 ::ec:c5::
192.168.9.115 ::6c::f7:
192.168.7.111 :::b6:6e:a9
sort -t. -k3.,.1nr -k4.,.3nr arp.txt
-k多少列
-k3.,3.3 第三列第一个字符到第三列第一个字符
-k4.,4.3 第四列第一个字符,第四列第三个字符
[root@lanny test]# sort -t. -k3.,.1nr -k4.,.3nr arp.txt
192.168.9.115 ::6c::f7:
192.168.8.4 ::6c::5d:
192.168.7.111 :::b6:6e:a9
192.168.6.7 :1d:::b2:e1
192.168.4.9 :0a:e6:b5:d1:4b
192.168.3.7 ::bf:::
192.168.3.5 :e0:4c::a3:
192.168.2.9 :e0:4c::d1:8b
192.168.2.4 :0a:eb:6d::
192.168.2.2 :e0:4c::d1:7d
192.168.1.22 :e0:4c::ce:
192.168.1.2 ::6c:::
192.168.0.122 ::ec:c5::
192.168.0.15 :e0:4c::d7:0e
192.168.0.4 :0e:1f:::
192.168.0.3 :e0:4c::d2:a5
题目:[百度搜狐面试题] 统计url出现次数 ---awk解决
oldboy.log
http://www.etiantain.org/index.html
http://www.etiantain.org/1.html
http://post.etiantain.org/index.html
http://mp3.etiantain.org/3.html
http://www.etiantain.org/1.html
http://post.etiantain.org/2.html
数组:
[root@lanny test]# awk 'BEGIN{array[1]="lanny";array[2]="oldlanny";for(key in array) print key,array[key]}'
lanny
oldlanny
t2.awk
#!/bin/awk
BEGIN{
array[]="lanny"
array[]="oldlanny"
for(key in array)
print key,array[key]
}
解析:begin定义,表示初始化数组
[root@lanny test]# awk -f t2.awk
lanny
oldlanny
[root@lanny test]# ./t2.awk #加了权限后可以这样执行
-f 从文件读
另一种方式:
提供BEGIN和END的作用是给程序赋予初始状态和在程序之后执行一些扫尾的工作.
任何在BEGIN之后列出的操作(在{}内)将在awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行.因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果.
将数组输出
[root@lanny test]# awk 'BEGIN{array[1]="lanny";array[2]="oldlanny";}END{for (key in array) print key,array[key]}' /etc/hosts #没什么实在意义,只不过写法需要数据流, begin 初始化,end 处理.
lanny
oldlanny
[root@lanny test]#cat /etc/hosts | awk 'BEGIN{array[1]="lanny";array[2]="oldlanny";}END{for (key in array) print key,array[key]}'
将文件内容输出为数组
[root@lanny test]# awk 'BEGIN{array[1]="lanny";array[2]="oldlanny";}END{for (key in array) print key,array[key]}' /etc/hosts > awk.log
[root@lanny test]# cat awk.log
lanny
oldlanny
把第一列做为下标,第二列做为值输出.放入S[]输出
[root@lanny test]# awk '{S[$1]=$2}END{for(k in S) print k,S[k]}' awk.log
lanny
oldlanny
[sh]uniq-sort-awk的更多相关文章
- 日志分析查看——grep,sed,sort,awk运用
概述 我们日常应用中都离不开日志.可以说日志是我们在排查问题的一个重要依据.但是日志并不是写了就好了,当你想查看日志的时候,你会发现线上日志堆积的长度已经超越了你一行行浏览的耐性的极限了.于是,很有必 ...
- shell uniq sort -u 去重排序
sort -u 和 uniq都能起到删除重复信息的功能,那么他们的区别究竟在哪呢? $ cat test jason jason jason fffff jason 下面分别执行三个命令 :sort ...
- 使用sort&awk实现文件内容块排序
源文件为: [root@luo5 wangxx]# cat -v luo.txt J LuoSoutth jfsaNanjing,china Y ZhangVictory UniversityNejf ...
- sort+awk+uniq三者结合使用
(1)统计文件中出现次数最多的前10个单词 #ps -ef > ps.file #cat ps.file | awk ‘{print $1}’ | sort | uniq -c | sort - ...
- sort +awk+uniq 统计文件中出现次数最多的前10个单词
实例cat logt.log|sort -s -t '-' -k1n |awk '{print $1;}'|uniq -c|sort -k1nr|head -100 统计文件中出现次数最多的前10个单 ...
- Linux awk+uniq+sort 统计文件中某字符串出现次数并排序
https://blog.csdn.net/qq_28766327/article/details/78069989 在服务器开发中,我们经常会写入大量的日志文件.有时候我们需要对这些日志文件进行统计 ...
- cut,sort,awk,sed,tr,find,wc,uniq在Linux中的用法
cut语法cut [-bn] [file]cut [-c] [file]cut [-df] [file] -b :以字节为单位进行分割.这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志.-c ...
- wc,sort,uniq,awk,grep
wc awk, sort, uniq grep
- 日志快速筛选 之 linux命令grep|uniq|wc|awk
以前我个人的观念是,在线上运行的东西尽量不要记什么流水日志. 但是后来我变了,发现在线上记日志是一个绝对有必要的东西,尤其是在当下很流行的微服务的推动下,没有日志的帮助,犹如一个睁眼瞎,排查问题基本靠 ...
- linux 下删除重复行-- uniq 与 awk
$ cat file liw liw liw hdsui mdksjd liw $ cat file | uniq -u # 只删除相邻的,不保留重复行 hdsui mdksjd liw $ cat ...
随机推荐
- STL - 容器 - Forward List
forward list是一个行为受限的list, 不能走回头路. 它只提供前向迭代器, 而不提供双向迭代器. eg: rbegin(), rend(), crbegin(), crend()这些都不 ...
- Java连接Oracle数据库示例
1.数据库复用模块 package cn.jzy.database; import java.sql.Connection; import java.sql.DriverManager; import ...
- bzoj3675【APIO2014】序列切割
3675: [Apio2014]序列切割 Time Limit: 40 Sec Memory Limit: 128 MB Submit: 1468 Solved: 607 [Submit][Sta ...
- Android开发之发送邮件功能的实现(源码分享)
Android开发中可能会碰到怎样发送邮件的困扰,之前我也查了相关的文档,博友们也分享了不少的发送邮件的办法.总共同拥有3种把,我细致阅读了下,发现有的讲的太过复杂跟麻烦,不够清晰.我今天就来分享下我 ...
- 转:Python模块学习 ---- httplib HTTP协议客户端实现
httplib 是 python中http 协议的客户端实现,可以使用该模块来与 HTTP 服务器进行交互.httplib的内容不是很多,也比较简单.以下是一个非常简单的例子,使用httplib获取g ...
- jquery 圆形进度条
最近手里面的项目需要完成这个对设备性能的检测显示功能,需要使用到圆形进度条这样的效果,网上找了一圈,有很多相当的插件,找到:circliful 插件,看了他的使用说明比较的方便,于是就下载了它并将自己 ...
- Wide - Residual - Inception Networks for R eal - time O bject D etection
本文的提出了一个WR-inception网络结构.只需更小的内存消耗和更小的计算量. 作者使用了一种微结构,整个宏观网络都是由这个微结构组成. 微结构 微结构的种类如下: 基本的残差结构(3*3,3* ...
- Linux不用使用软件把纯文本文档转换成PDF文件的方法
当你有一大堆文本文件要维护的时候,把它们转换成PDF文档会好一些.比如,PDF更适合打印,因为PDF文档有预定义布局.除此之外,还可以减少文档被意外修改的风险. 要将文本文件转换成PDF格式,你要按照 ...
- 怎么将txt文件转化为html格式的文件?--极为丑陋的方式
# -*- coding: utf-8 -*- #python 27 #xiaodeng #怎么将txt文件转化为html格式的文件?--极为丑陋的方式 import os #找出所有的txt格式的文 ...
- spring boot更换日志为log4j2
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...