有这样的文本文件。
john,3
albert,4
tom,3
junior,5
max,6
tony,5
我正在尝试获取column2值相同的记录。我想要的输出。
john,3
tom,3
junior,5
tony,5
我正在检查我们是否可以在第二列使用uniq -d
?
答案 0 :(得分:2)
这是使用awk的一种方式。它读取输入文件两次,但不需要排序:
awk -F, 'FNR==NR { a[$2]++; next } a[$2] > 1' file file
结果:
john,3
tom,3
junior,5
tony,5
简要说明:
FNR==NR
是一个常见的AWK习惯用法,对于参数列表中的第一个文件是正确的。这里,第二列被添加到一个数组并递增。在第二次读取文件时,我们只需检查第二列的值是否大于一(next
关键字跳过处理其余代码)。
答案 1 :(得分:1)
您可以在字段(列)上使用uniq,但在您的情况下不容易。
Uniq的-f
和-s
选项分别按字段和字符进行过滤。然而,这些都没有做到这一点。
-f
按空格划分字段,然后用逗号分隔它们。
-s
会跳过固定数量的字符,而且您的名字长度可变。
总的来说,uniq
用于通过将重复项合并为唯一行来压缩输入。你实际上希望保留重复并消除单例,这与uniq
用来做的相反。看起来你需要一种不同的方法。