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. GenericKeychain

    KeychainItemWrapper是apple官方例子“GenericKeychain”里一个访问keychain常用操作的封装类,在官网上 下载了GenericKeychain项目后,只需要把“ ...

  2. C#连接Sqlite实现单表操作

    今天我们来了解下VS使用的众多数据库中比较轻量的数据库SQLITE,好处当然就在于“轻~”!!!.自己理解

  3. eclipse添加tomcat运行环境

  4. [题解](tarjan割点/点双)luogu_P3225_矿场搭建

    首先和割点有关,求割点,然后这些割点应该把这个图分成了多个点双,可以考虑点双的缩点,假如缩点做的话我们要分析每个点双的性质和贡献 先拿出一个点双来,如果它没有连接着割点,那么至少要建两个,以防止其中一 ...

  5. Zynq7000开发系列-4(新:Xilinx交叉编译环境搭建)

    一.前言  本来上一篇文章已经讲了Xilinx交叉编译环境的搭建,但是我在后续的使用中发现:使用2011年版本的交叉编译链编译OpenCV 3.1.0时出现错误: 网络搜索一番,查明是交叉编译链的问题 ...

  6. Hive_Hive和数据仓库简介

    文章摘自 : http://www.imooc.com/video/7573 Hive是建立在Hadoop HDFS上的数据仓库基础架构.Hive可以用来进行数据的ETL.Hive定义了简单的类似SQ ...

  7. 转 Linux SendMail发送邮件失败诊断案例(四)

    http://www.cnblogs.com/kerrycode/p/7826036.html

  8. 094 Binary Tree Inorder Traversal 中序遍历二叉树

    给定一个二叉树,返回其中序遍历.例如:给定二叉树 [1,null,2,3],   1    \     2    /   3返回 [1,3,2].说明: 递归算法很简单,你可以通过迭代算法完成吗?详见 ...

  9. Unity Shader入门精要学习笔记 - 第4章 学习 Shader 所需的数学基础

    摘录自 冯乐乐的<Unity Shader入门精要> 笛卡尔坐标系 1)二维笛卡尔坐标系 在游戏制作中,我们使用的数学绝大部分都是计算位置.距离.角度等变量.而这些计算大部分都是在笛卡尔坐 ...

  10. mysql设置自增长列的当前值

    -- 查看表中自增长列的当前值 SELECT Auto_increment FROM information_schema.`TABLES` WHERE Table_Schema='rhr' AND ...