shell脚本,awk 根据文件某列去重并且统计该列频次。
a文件为
a
a
a
s
s
d .怎么把a文件变为
a
s
d .怎么把a文件变为
a
a
a
s
s
d
解题方法如下:

解题思路
[root@localhost study]# awk 'NR==FNR{a[$2]++}NR!=FNR&&++b[$2]==1{print $1,$2,a[$2]}' a a
1 a 3
4 s 2
6 d 1
NR=FNR处理第一个文件a-----> {a[$2]++}
a[$2]++相当于a[$2]=a[$2]+1
a[a]=a[a]+1=0+1=1
a[a]=a[a]+1=1+1=2
a[a]=a[a]+1=2+1=3
a[s]=a[s]+1=0+1=1
a[s]=a[s]+1=1+1=2
a[d]=a[d]+1=0+1=1
这里只取值,不输出
NR!=FNR&&++b[$2]==1{print $1,$2,a[$2]}
当NR!=FNR处理第二个文件 a
++b[$2]==1 ++b表示先自增,后赋值。就是第二列是重复的值,执行一次
第一行b[a]=0 ++b[a]---->结果b[a]=1,然后在判断是否等于1,等于1条件成立,执行后面的结果
输出 print $1,$2,a[$2]------>$1=1,$2=a,a[$2]=a[a]=3 (1 a 3)
第二行b[a]=1 ++b[a]----->结果b[a]=2,然后在判断是否等于1,此时不等于1,后面不执行
第三行b[a]=2 ++b[a]---->结果b[a]=3,然后在判断是否等于1,此时不等于1,后面不执行
第四行b[s]=0 ++b[s]----->结果b[s]=1,然后在判断是否等于1,等于1条件成立,执行后面的结果
输出 print $1,$2,a[$2]------>$1=4,$2=s,a[$2]=a[s]=2 (4 s 2)
第五行b[s]=1 ++b[s]----->结果b[s]=2,然后在判断是否等于1,此时不等于1,后面不执行
第六行b[d]=0 ++b[d]----->结果b[d]=1,然后在判断是否等于1,等于1条件成立,执行后面的结果
输出 print $1,$2,a[$2]------>$1=6,$2=d,a[$2]=a[d]=1 (6 d 1)
所以得到结果如下:
1 a 3
4 s 2
6 d 1
shell脚本,awk 根据文件某列去重并且统计该列频次。的更多相关文章
- linux下shell脚本执行jar文件
最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...
- Mac下通过shell脚本修改properties文件
通过shell脚本替换属性文件中的某行记录 假设有如下属性文件 demo.properties user.name=test user.password=123456 ................ ...
- shell脚本 awk工具
awk工具概述awk编程语言/数据处理引擎基于模式匹配检查输入文本,逐行处理并输出通常在shell脚本中,或取指定的数据单独用时,可对文本数据做统计 命令格式格式一:awk [选项] '[条件]{编辑 ...
- shell脚本实现查找文件夹下重复的文件,并提供删除功能
Windows下有软件FindDupFile,可以搜索指定目录及其下子目录,列出所有内容完全相同的文件(文件名可能不同),然后由用户选择删除重复的文件. 然而shell脚本却可以使用几行的命令完成与此 ...
- shell脚本生成xml文件
今天把这段时间学习完shell后完成工作上的一个小案件整理了一下,分享给大家! 说来也巧了,作为一个刚刚毕业半年的菜鸟,进入公司后,听公司的大牛推荐学习linux--”鸟哥的私房菜“,基本上是从去年8 ...
- Shell脚本实现对文件编辑
常见Linux文件的编辑命令 vi/vim,有时候我们想写一个脚本实现对文件编辑,这个时候,可能就不够用了,下面介绍一些办法 1.echo命令 Shell的echo命令常用于字符串的输出 例如: [r ...
- shell脚本——awk
目录 一.awk 1.1.awk简介 1.2.基本格式 1.3.工作原理 1.4.常见的内建变量(可直接用) 按字段输出文本 1.5.awk和getline 有重定向符 无重定向符 1.6.指定分隔符 ...
- shell脚本 awk实现实时监控网卡流量
一.简介 通过第3方工具获得网卡流量,这个大家一定很清楚.其实通过脚本一样可以实现效果.下面是我个人工作中整理的数据.以下是shell脚本统计网卡流量. 现原理: cat /proc/net/dev ...
- 用shell脚本批量修改文件后缀名
早上本想将一些照片上传到相册中,但是由于所有照片的扩展名都是JPG而不是小写的jpg,因此造成了“格式不正确”而不能上传照片.此刻就产生了这样一个问题:使用shell脚本如何批量将所有文件的扩展名JP ...
随机推荐
- MongoDb 创建用户以及其他版本造成的一些问题
问题:require auth data to have schema version 3 but found 1 这是可以查看如下链接: http://stackoverflow.com/quest ...
- 使用dynamic关键词 CS1969错误
添加 Microsoft.CSharp.dll 引用即可 不需要添加using Microsoft.CSharp 这类namespace
- Phpstorm建立连接Wampserver的数据库
phpstorm是一款php集成开发环境软件,集成了很多功能,不但有强大的代码编辑及调试功能,还能连接数据库.本文写的就是如何用phpstorm来建立访问wampserver数据库,查询输出数据,方便 ...
- StringUtils中常用方法leftPad(),rightPad(),center()
org.apache.commons.lang3的StringUtils 方法如下: public static String leftPadTime(Integer time){ return ...
- assembly x86(nasm)修改后的日常
data segment ENG db 'SUNdayS Coming I Wanna Drive My Car,SUN,SUN$' ;9,3 sun1 db 'SUN' swcount db 0ah ...
- 一篇文章带你搞懂 SpringBoot与Swagger整合
Swagger使用由于不喜欢csdn的markwoen编辑器,对代码样式支持不好,看着不舒服,对审美要求比较高的同学移步github:https://github.com/itguang/swagge ...
- 有趣的JS存储 连等问题
五个月不见了,你是不是和我一样又帅了,今天我们先来看一道经典的关于JS存储的题目,来一场紧张又刺激的脑内吃鸡大战吧: var a = {n:1}; a.x = a = {n:2}; console.l ...
- 给mysql默认root用户设置密码
情况1:如果忘记了 MySQL 的 root 密码,可以用以下方法重新设置: 情况2:添加了phpmyadmin,登录时使用mysql的用户密码登录,但phpmyadmin不能使用空密码登录,即为 ...
- Jquery | 基础 | 事件的链式写法
$(".title").click(function () { $(this).addClass("curcol").next(".content&q ...
- Codeforces Round #532(Div. 2) B.Build a Contest
链接:https://codeforces.com/contest/1100/problem/B 题意: 给n,m. 给m个数,每个数代表一个等级,没给一个将其添加到题目池中,当题目池中有难度(1-n ...