我尝试编写脚本来获取第一列中的值,这些值是相同的,但在第二列中具有不同的值。有人知道该怎么做吗?示例:我有这个 .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
此方法还会删除与其他行重复的所有行;然后提取这些行的第一个字段;然后输出所有出现两次或多次的第一个字段。