linux - 过滤txt文件中的列

标签 linux bash awk

我有一个包含 2 列的 csv 文件

bob,red
bob,red
sam,blue
judy,black
sam,blue
nick,blue
judy,red
sam,blue
nick,red
don,red
judy,blue

在 Ubuntu 中使用 bash 我需要一个过滤器来仅选择第一列值多次出现但与第二列中超过“X”个值匹配的行。 所以如果 "X"= 2 结果将是

judy,black
judy,red
judy,blue
nick,blue
nick,red

或者如果“X”= 3

judy,black
judy,red
judy,blue

最佳答案

你可以使用

sort -u 1.csv

去除重复值。然后,您可以计算第 1 列值的出现次数:

sort -u 1.csv | cut -f1 -d, | sort | uniq -c | sort -n

现在,您可以使用 sed 只选择正确的出现次数:

sort -u 1.csv | cut -f1 -d, | sort | uniq -c | sort -n | sed -n '/ 2 /,$p'

剩下的留给读者作为练习。

关于linux - 过滤txt文件中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15703141/

相关文章:

linux - 使用 curl 从 GitHub 运行 bash 脚本

linux - 在 Nagios 中创建事件

python - 如何在通知区域或指示器小程序中创建状态图标?

linux - 从终端短暂运行/重启 sublime text

linux - 如何为用户设置 umask 默认值?

awk - 如何删除文件夹中多个文件的 "0"行?

linux - 将时间转换为纪元时间并找出 2 个时间戳之间的差异

作为服务启动时,Java 应用程序无法正常工作

linux - 如何在 BASH 中对文件行进行排序

awk - 跨列计算每行的最大值和最小值并输出关联的列名