我需要帮助来解析这样的输入。
192.168.0.168: 1
192.168.0.158: 0
192.168.0.198: 0
192.168.0.148: 0
192.168.0.158: 1
192.168.0.168: 0
如果任何 ip 的第二列中有 1,我想删除第二列中有 0 且第一列中有相同 ip 的行。所以我的输出应该是这样的。
192.168.0.168: 1
192.168.0.198: 0
192.168.0.148: 0
192.168.0.158: 1
我想这可以通过使用 awk、sed 等来完成,但我不知道该怎么做。我希望我能正确解释我的问题。谢谢...
最佳答案
一种方式:
awk '
{
ips[ $1 ] = ( ips[ $1 ] == 1 ) ? 1 : $2
}
END {
for ( ip in ips ) {
print ip, ips[ ip ]
}
}
' infile
这会产生(输出可能是无序的):
192.168.0.168: 1
192.168.0.198: 0
192.168.0.148: 0
192.168.0.158: 1
关于bash - 如何根据 bash 中的列变量解析输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12172300/