linux 中根据指定列的重复次数输出数据
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
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2022-10-24 linux中删除文本的最后一行
2021-10-24 ubuntu qt.qpa.xcb: could not connect to display
2021-10-24 linux系统中comm命令的用法
2020-10-24 linux系统中配置磁盘容量配额服务(quota)
2020-10-24 linux系统中添加swap交换分区、删除swap交换分区