如果第一列中的值相同,则比较第二列,如果第二列不同,则将第一列中的值保存到txt文件中

如果第一列中的值相同,则比较第二列,如果第二列不同,则将第一列中的值保存到txt文件中

我尝试编写脚本来获取第一列中的值,这些值是相同的,但在第二列中具有不同的值。有人知道该怎么做吗?示例:我有这个 .txt 文件:

163.213.54.88     aaaaa
163.213.54.88     bbbbb
9.143.93.246      ccccc
219.98.24.226     aaaaa
163.213.54.88     aaaaa
215.134.242.10    ccccc
131.16.225.31     bbbbb
9.143.93.246      aaaaa
131.16.225.31     bbbbb

在这种情况下,结果应该是:

163.213.54.88
9.143.93.246

非常感谢。

答案1

删除与其他行重复的所有行,然后提取第一个字段出现两次或更多次的行的第一个字段:

$ sort -u file | awk '++count[$1] == 2 { print $1 }'
163.213.54.88
9.143.93.246

答案2

无需排序:

awk '!($1 in a) {a[$1] = $2; next} $2 != a[$1] {print $1}' file

输出

163.213.54.88
9.143.93.246

答案3

与 @Kusalananda 的答案高度相似(他比我先一步),但调用更简单awk

sort -u file | awk '{print $1}' | uniq -d

此方法还会删除与其他行重复的所有行;然后提取这些行的第一个字段;然后输出所有出现两次或多次的第一个字段。

相关内容