给定输入:
144.252.36.69
afrloop=32235330165603
144.252.36.69
afrloop=32235330165603
144.252.36.69
afrloop=32235330165603
222.252.36.69
afrloop=31135330165603
222.252.36.69
afrloop=31135330165603
222.252.36.69
afrloop=31135330165603
222.252.36.69
afrloop=31135330165603
我怎样才能输出:
144.252.36.69
afrloop=32235330165603 3 times
222.252.36.69
afrloop=31135330165603 4 times
awk
如果您想要自定义输出格式,这是一个解决方案该脚本可以执行为
解释
首先,我们使用
NR%2==1
匹配奇数行,因为奇数模 2 等于 1,如果任何行匹配此条件,则我们将整行保存$0
到名为 的变量ip
中。我们可以使用next
跳过任何进一步的处理并直接进行下一次迭代。其次,我们
NR%2==0
用来匹配偶数行,如果一行匹配,那么我们创建一个标记为ip"\n"$0
数组的索引,a
并增加该特定索引的计数值。例如,等效的扩展就像为了简单起见,我忽略了
\n
此示例中的新行最后
END
,在处理完每一行之后,我们使用for
循环打印出数组中每个元素的值a
,在我们的例子中,它是每个唯一索引的计数有趣的基准
测试文件生成(100 万条记录)
@n.caillou 粘贴解决方案
awk 解决方案