linux 中实现根据特定列的重复项提取数据
001、
(base) root@PC1:/home/test3# ls a.txt (base) root@PC1:/home/test3# cat a.txt ## 测试数据 1 aa 2 bb 3 aa 4 cc 5 dd 6 cc 7 kk 8 aa 9 kk ## 根据第二列的重复项筛选数据 (base) root@PC1:/home/test3# cut -f 2 a.txt | sort | uniq -d | while read i; do awk -v a=$i '$2 == a' a.txt >> result; done (base) root@PC1:/home/test3# ls a.txt result (base) root@PC1:/home/test3# cat result ## 结果文件 1 aa 3 aa 8 aa 4 cc 6 cc 7 kk 9 kk
002、R语言实现
dir() dat <- read.table("a.txt") ## 测试数据 dat id <- unique(dat[,2][duplicated(dat[,2])]) ## 提取重复id id dat[dat$V2 %in% id,] ## 提取重复数据
003、python实现
(base) root@PC1:/home/test3# ls a.txt test.py (base) root@PC1:/home/test3# cat a.txt ## 测试数据 1 aa 2 bb 3 aa 4 cc 5 dd 6 cc 7 kk 8 aa 9 kk (base) root@PC1:/home/test3# cat test.py ## 测试程序 #!/usr/bin/python in_file = open("a.txt", "r") out_file = open("result.txt", "w") lines = in_file.readlines() list1 = [] for i in lines: i = i.strip().split() list1.append(i[-1]) set1 = set() for i in list1: if list1.count(i) > 1: set1.add(i) for i in lines: i = i.strip().split() for j in set1: if i[-1] == j: out_file.write("\t".join(i) + "\n") in_file.close() out_file.close() (base) root@PC1:/home/test3# python test.py ## 执行程序 (base) root@PC1:/home/test3# ls a.txt result.txt test.py (base) root@PC1:/home/test3# cat result.txt ## 结果文件 1 aa 3 aa 4 cc 6 cc 7 kk 8 aa 9 kk
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-08-23 c primer plus 7编程练习