题目:[百度搜狐面试题] 统计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

uniq-sort-awk的更多相关文章

  1. 日志分析查看——grep,sed,sort,awk运用

    概述 我们日常应用中都离不开日志.可以说日志是我们在排查问题的一个重要依据.但是日志并不是写了就好了,当你想查看日志的时候,你会发现线上日志堆积的长度已经超越了你一行行浏览的耐性的极限了.于是,很有必 ...

  2. shell uniq sort -u 去重排序

    sort -u 和 uniq都能起到删除重复信息的功能,那么他们的区别究竟在哪呢? $ cat test jason jason jason fffff jason 下面分别执行三个命令 :sort ...

  3. 使用sort&awk实现文件内容块排序

    源文件为: [root@luo5 wangxx]# cat -v luo.txt J LuoSoutth jfsaNanjing,china Y ZhangVictory UniversityNejf ...

  4. sort+awk+uniq三者结合使用

    (1)统计文件中出现次数最多的前10个单词 #ps -ef > ps.file #cat ps.file | awk ‘{print $1}’ | sort | uniq -c | sort - ...

  5. sort +awk+uniq 统计文件中出现次数最多的前10个单词

    实例cat logt.log|sort -s -t '-' -k1n |awk '{print $1;}'|uniq -c|sort -k1nr|head -100 统计文件中出现次数最多的前10个单 ...

  6. Linux awk+uniq+sort 统计文件中某字符串出现次数并排序

    https://blog.csdn.net/qq_28766327/article/details/78069989 在服务器开发中,我们经常会写入大量的日志文件.有时候我们需要对这些日志文件进行统计 ...

  7. cut,sort,awk,sed,tr,find,wc,uniq在Linux中的用法

    cut语法cut [-bn] [file]cut [-c] [file]cut [-df] [file] -b :以字节为单位进行分割.这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志.-c ...

  8. wc,sort,uniq,awk,grep

    wc awk, sort, uniq grep

  9. 日志快速筛选 之 linux命令grep|uniq|wc|awk

    以前我个人的观念是,在线上运行的东西尽量不要记什么流水日志. 但是后来我变了,发现在线上记日志是一个绝对有必要的东西,尤其是在当下很流行的微服务的推动下,没有日志的帮助,犹如一个睁眼瞎,排查问题基本靠 ...

  10. linux 下删除重复行-- uniq 与 awk

    $ cat file liw liw liw hdsui mdksjd liw $ cat file | uniq -u # 只删除相邻的,不保留重复行 hdsui mdksjd liw $ cat ...

随机推荐

  1. android view holder 优化

    android 一般都用viewholder来优化contentView,采用sparseArray能够进一步优化 /** * 用法: ImageView bananaView = ViewHolde ...

  2. android 回调函数一:基本概念

    1.概念 客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数. 一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C ...

  3. iOS启动图和开屏广告图,类似网易

    iOS启动图和开屏广告图,类似网易 启动图是在iOS开发过程中必不可少的一个部分,很多app在启动图之后会有一张自定义的开屏广告图,点击该广告图可以跳转到广告图对应的页面.今天呢,和大家分享一下如何添 ...

  4. java多线程系列8-线程的优先级

    在java中设置线程优先级使用setPriority,在jdk中的源代码如下: public final void setPriority(int newPriority) { ThreadGroup ...

  5. Ubuntu 14.04下安装JDK8

    本文地址:http://www.cnblogs.com/archimedes/p/ubuntu-jdk8.html,转载请注明源地址. 欢迎关注我的个人博客:www.wuyudong.com, 更多云 ...

  6. 【读书笔记】iOS-UIWindow-密码框

    一,工程结构,如下图所示: 二,代码 PasswordInputWindow.h #import <UIKit/UIKit.h> @interface PasswordInputWindo ...

  7. Android源码分析之AsyncTask

    AsyncTask相信从事Android开发的同学都不陌生,基本都应该用到了,和以前一样我们还是先来看看此类的summary.AsyncTask 可以确保更合理.容易的使用UI线程.这个类是设计用来执 ...

  8. IOS开发中(null)与<null>的处理

    不小心在开发过程中,得到了(null)以及<null>的返回值,找了好长时间只找到了一个关于<null>的. 由于要根据返回值进行判断,做出必要反应,因此必须知道返回值所代表的 ...

  9. 真机测试时的错误:No matching provisioning profiles found

    1.出现错误的原因是这样的---- 公司开始做项目,原来做真机测试的时候,用的是公司申请的苹果开发者账号.现在项目结束了,准备上线,但客户要求使用客户自己的苹果开发者是账号上线,于是就用客户的账号测试 ...

  10. IOS开发关于测试的好的网址资源

    1. 高级自动化单元测试,推荐看LeanCloud 工程师的李智维的自动化单元测试的直播录影李智维的演示github 2.iOS开发-单元测试 这只是一篇简单的ios测试介绍 3.iOS单元测试 来自 ...