bash - 列 : randomly keep one 中的重复项

标签 bash awk duplicates multiple-columns

我有一个文件 (input.txt),其结构类似于:

 abc    1
 bcd    a
 cde    1
 def    4
 efg    a
 fgh    3

我想删除第 2 列中的重复项,以便该列中只有唯一的字符串(独立于第 1 列中的内容)。但是选择的行应该随意选择。输出可能例如是:

 bcd    a
 cde    1
 def    4
 fgh    3

我试图创建一个列出重复项的文件(使用 awk '{print $2}' input.txt | sort | uniq -D | uniq)但后来我只设法将它们全部删除awk '!A[$2]++' 而不是随机保留其中一个重复项。

最佳答案

预处理输入以使其随机化:

shuf input.txt | awk '!A[$2]++'

关于bash - 列 : randomly keep one 中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49323423/

相关文章:

linux - 为什么 shell 脚本中的 'read' 命令缺少初始字符?

linux - 如何从文件中提取多行扩展的电子邮件 header

php - while 循环中偶尔出现奇怪的重复 echo

SQL 查询 - 删除具有重复列值的行

Java/SQL 查找重复项

mysql - BASH - 使用存储在数组中的参数执行 mysql 命令

linux - 文件出现后立即删除特定文件类型的文件

linux - 写入文件时循环的 Shell Bash 脚本

regex - 用斜线捕获模式后的单词

bash - 使用自定义记录分隔符和字段分隔符格式化文本输出的 awk 命令