首页 > 系统相关 >linux 中根据指定列的重复次数输出数据

linux 中根据指定列的重复次数输出数据

时间:2023-10-24 09:00:10浏览次数:35  
标签:输出 pc1 次数 awk linux test02 txt root

 

001、按照原始顺序输出

[root@pc1 test02]# ls
a.txt
[root@pc1 test02]# cat a.txt        ##  测试数据
a       76
b       78
a       100
c       222
b       7777
b       8888
a       9999
b       3333
d       1111
e       7777777
e       9999999
f       yyyyyy
f       777777
g       733333
f       333333
f       999999
f       gggggg
f       wwwwww
f       666666
a       ppppp
e       ggggg
e       fffff              ## 输出第一列重复4次的数据, 按照原始顺序输出
[root@pc1 test02]# awk '{OFS = "\t"; print ++ay[$1], $0}' a.txt | tac | awk '++ay[$2] == 1 && $1 == 4' | awk '{print $2}' | awk '{ay[NR] = $0} END {for(i = 1; i <= NR; i++) {print NR, ay[i]}}' | cat - a.txt | awk '{if(NR == 1) {a = $1}; if(NR <= a) {ay[$2]} else if($1 in ay) {print $0}}'
a       76
b       78
a       100
b       7777
b       8888
a       9999
b       3333
e       7777777
e       9999999
a       ppppp
e       ggggg
e       fffff

 

002、排序后输出

[root@pc1 test02]# ls
a.txt
[root@pc1 test02]# cat a.txt
a       76
b       78
a       100
c       222
b       7777
b       8888
a       9999
b       3333
d       1111
e       7777777
e       9999999
f       yyyyyy
f       777777
g       733333
f       333333
f       999999
f       gggggg
f       wwwwww
f       666666
a       ppppp
e       ggggg
e       fffff
[root@pc1 test02]# cut -f 1 a.txt | sort | uniq -c | awk '$1 == 4 {print $2}' > tmp.txt
[root@pc1 test02]# cat tmp.txt a.txt | awk -v a=$(wc -l < tmp.txt) '{if(NR <= a) {ay[$0]} else if($1 in ay) {print $0}}'
a       76
b       78
a       100
b       7777
b       8888
a       9999
b       3333
e       7777777
e       9999999
a       ppppp
e       ggggg
e       fffff

 .

 

标签:输出,pc1,次数,awk,linux,test02,txt,root
From: https://www.cnblogs.com/liujiaxin2018/p/17783938.html

相关文章

  • Linux服务器系统监控
    1、Docker安装Prometheus1.1、安装docker和docker-compose环境https://www.cnblogs.com/hg-super-man/p/10908220.html1.2、安装拷贝配置https://gitee.com/xiaohai008/docker-prometheus.git1.3、启动服务docker-composeup-d2、二进制安装https://prometheus.io/down......
  • Linux课堂小结(1)
    本周Linux课堂学习了基本权限ACL和高级权限的相关知识。其中基本权限ACL包含了ACL基本用法和ACL的高级特性。UGO权限只针对一个用户、一个组与其他用户,使用上有局限性,ACL主要提供传统的UGO的r、w、x权限之外的具体权限设置,可以对单一用户、单一文件或目权限设置。①.ACL文件权......
  • Linux p8 找回root密码
    【学习课程】:【【小白入门通俗易懂】2021韩顺平一周学会Linux】https://www.bilibili.com/video/BV1Sv411r7vd/?p=14&share_source=copy_web&vd_source=2c07d62293f5003c919b2df9b2e0549e找回root密码(CentOS7.6)首先,启动系统,进入开机界面,在界面中按"e"进入编辑界面,如图......
  • Linux绝对路径和相对路径
    在Linux中,简单的理解一个文件的路径,指的就是该文件存放的位置。只要我们告诉Linux系统某个文件存放的准确位置,那么它就可以找到这个文件。指明一个文件存放的位置,有2种方法,分别是使用绝对路径和相对路径。我们知道,Linux系统中所有的文件(目录)都被组织成以根目录“/”开始的倒......
  • [20231013]为什么刷新缓存后输出记录顺序发生变化3.txt
    [20231013]为什么刷新缓存后输出记录顺序发生变化3.txt--//当年提的问题,链接http://blog.itpub.net/267265/viewspace-2763181/=>[20210316]为什么刷新缓存后输出记录顺序发生变化.txt,--//正好别人问我,顺便我重复看了一下,顺便解答这个问题,实际上也许解答不对,许多行为我仅仅是猜测......
  • [20231020]为什么刷新缓存后输出记录顺序发生变化5.txt
    [20231020]为什么刷新缓存后输出记录顺序发生变化5.txt--//前几天做了单表刷新缓存后输出记录顺序发生变化的情况,今天测试2个表的情况。--//我遇到一个奇怪的现象,做一个记录,我无法使用10046跟踪.1.环境:[email protected]:1521/orcl>@[email protected]:1521/orcl>@pr=======......
  • Java基础 字符输出流之一——FileWriter
     FileWriter书写细节:1.创建字符输出流对象细节①:参数是字符串表示的路径或者File对象都可以细节②:如果文件不存在会创建一个新的文件,但要保证父级路径是存在的细节③:如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关 2.写数据细节:如果write方法的参......
  • Nginx的安装-Linux
    下载地址#如果没有gcc环境,需要安装gcc:[root@localhostlocal]#yuminstallgcc-c++-y#安装依赖包[root@localhostlocal]#yum-yinstallgcczlibzlib-develpcre-developensslopenssl-devel#进入文件夹[root@localhostlocal]#cd/usr/local#在线下载或者上传......
  • linux常规命令
    1、cd上图,直接输入cd,会进入根目录2、treea/3、创建多个目录4、touch5、rm6、编译过程......
  • 更改Kali Linux系统语言以及安装zenmap
    更改KaliLinux系统语言以及安装zenmap在使用kali的过程中,会遇到许多问题,其中一个就是看不懂英语,下面是如何更换语言的步骤。更改KaliLinux系统语言首先,打开kali,以root用户打开终端,如图1-1所示,然后输入密码kali,如图1-2所示,再打开终端如图1-3所示,最后就看到如图1-4所示。 图......