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 ...
随机推荐
- windows7任务管理器内存相关列详细解释
内存 - 工作集:私人工作集中的内存数量与进程正在使用且可以由其他进程共享的内存数量的总和. 内存 - 峰值工作集:进程所使用的工作集内存的最大数量. 内存 - 工作集增量:进程所使用的工作集内存 ...
- [Xcode 实际操作]一、博主领进门-(7)使用不同类型的iOS模拟器
目录:[Swift]Xcode实际操作 本文将演示使用不同类型的iOS模拟器. 点击[运行]按钮,打开模拟器,并预览当前的项目. 当向苹果商店提交应用时,也需要同时提交应用的截图. 对当前的应用的界面 ...
- performSegueWithIdentifier 不生效的解决办法
相信很多人都会遇到这样的需求: APP 打开以后,判断用户是否登录,如果未登录,就跳转到登陆页. 今天我也遇到了这个需求,发现我封装的一个 `func checkLoginStatus()` 放在 ` ...
- iOS7 UITableView Row Height Estimation
This post is part of a daily series of posts introducing the most exciting new parts of iOS7 for dev ...
- hibernate错误总结2
- iOS开发 - CocoaPods的常见使用方式
1 CocoaPods 的安装 1.1 作用: 帮助管理和维护第三方框架,快速的搜索到第三方框架, 然后自动集成到工程里面来, 并编译成一个libPod.a的静态库给我们项目用 1.2 理解: 1. ...
- mysql 安装和修改编码(utf8mb4)
安装mysql(linux 我的环境centos 7) 安装MySQL官方的Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-com ...
- SpringBoot | Velocity template
SpringBoot版本: <parent> <groupId>org.springframework.boot</groupId> <artifactId& ...
- java数据结构----图
1.图:.在计算机程序设计中,图是最常用的数据结构之一.对于存储一般的数据问题,一般用不到图.但对于某些(特别是一些有趣的问题),图是必不可少的.图是一种与树有些相像的数据结构,从数学意义上来讲,树是 ...
- 洛谷P1896||bzoj1087 [SCOI2005]互不侵犯
bzoj1087 洛谷P1896 想了很久,太久没做状压都已经不会了... 状压每一行就好了 #include<cstdio> #include<algorithm> #inc ...