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 根据文件某列去重并且统计该列频次。的更多相关文章

  1. linux下shell脚本执行jar文件

    最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...

  2. Mac下通过shell脚本修改properties文件

    通过shell脚本替换属性文件中的某行记录 假设有如下属性文件 demo.properties user.name=test user.password=123456 ................ ...

  3. shell脚本 awk工具

    awk工具概述awk编程语言/数据处理引擎基于模式匹配检查输入文本,逐行处理并输出通常在shell脚本中,或取指定的数据单独用时,可对文本数据做统计 命令格式格式一:awk [选项] '[条件]{编辑 ...

  4. shell脚本实现查找文件夹下重复的文件,并提供删除功能

    Windows下有软件FindDupFile,可以搜索指定目录及其下子目录,列出所有内容完全相同的文件(文件名可能不同),然后由用户选择删除重复的文件. 然而shell脚本却可以使用几行的命令完成与此 ...

  5. shell脚本生成xml文件

    今天把这段时间学习完shell后完成工作上的一个小案件整理了一下,分享给大家! 说来也巧了,作为一个刚刚毕业半年的菜鸟,进入公司后,听公司的大牛推荐学习linux--”鸟哥的私房菜“,基本上是从去年8 ...

  6. Shell脚本实现对文件编辑

    常见Linux文件的编辑命令 vi/vim,有时候我们想写一个脚本实现对文件编辑,这个时候,可能就不够用了,下面介绍一些办法 1.echo命令 Shell的echo命令常用于字符串的输出 例如: [r ...

  7. shell脚本——awk

    目录 一.awk 1.1.awk简介 1.2.基本格式 1.3.工作原理 1.4.常见的内建变量(可直接用) 按字段输出文本 1.5.awk和getline 有重定向符 无重定向符 1.6.指定分隔符 ...

  8. shell脚本 awk实现实时监控网卡流量

    一.简介 通过第3方工具获得网卡流量,这个大家一定很清楚.其实通过脚本一样可以实现效果.下面是我个人工作中整理的数据.以下是shell脚本统计网卡流量. 现原理: cat /proc/net/dev ...

  9. 用shell脚本批量修改文件后缀名

    早上本想将一些照片上传到相册中,但是由于所有照片的扩展名都是JPG而不是小写的jpg,因此造成了“格式不正确”而不能上传照片.此刻就产生了这样一个问题:使用shell脚本如何批量将所有文件的扩展名JP ...

随机推荐

  1. HDU1080 【LCS变形】

    题意: 给你每种字符匹配的权值大小,给你两个串,长度小的串可以在小串里面添加空格和大串匹配,问你一个最大匹配权值. 思路: 有点类似于LCS吧,我们在求两个串的LCS的时候,不行的就扔掉了,在这里就是 ...

  2. Aufree/trip-to-iOS

    https://github.com/Aufree/trip-to-iOS?utm_source=next.36kr.com  

  3. Linux权限相关

    权限分组 用户:文件所有者 用户组:多个用户的集合 其他:除了用户和用户组之外的任何用户 权限类别 r:表示读的权限 w:表示写的权限 x:表示执行的权限 s:表示setuid权限,允许用户以其拥有者 ...

  4. 51 Nod 1640 天气晴朗的魔法( Kruskall )

    #include <bits/stdc++.h> typedef long long LL; using namespace std; ; struct node{ LL u,v,w; n ...

  5. Maven - settings.xml简易配置Demo

    前言 这里贴一下settings.xml的一个简易配置demo,就是简单配置了:本地的仓库地址.阿里云镜像.指定使用jdk1.8进行编译. 这里使用的Maven是3.5.0版本的. 配置文件demo ...

  6. Caffe实战五(Caffe可视化方法:编译matlab接口)

    接上一篇文章,这里给出配置caffe后编译matlab接口的方法.(参考:<深度学习 21天实战Caffe 第16天 Caffe可视化方法>) 1.将Matlab目录更新至Caffe的Ma ...

  7. Codeforces 1139D(推式子+dp)

    题目传送 推公式博客传送 推完式子就是去朴素地求就行了Orz const int maxn = 1e5 + 5; const int mod = 1e9 + 7; int m, mu[maxn], v ...

  8. 转 open_cursors参数设置调优

    https://www.cnblogs.com/Peyton-for-2012/archive/2013/05/07/3065058.html

  9. 转:php中的匿名函数和闭包(closure)

    一:匿名函数 (在php5.3.0 或以上才能使用) php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数.最常用的就是回调函 ...

  10. 记一下一道关于finally的题

     题目: public class Test{ public int add(int a,int b){ try { return a+b; } catch (Exception e) { Syste ...