如何使用变量搜索对出现超过X次的行进行排序,uniq和显示

时间:2014-03-27 16:55:01

标签: awk

更改“2”限制以使用变量的正确方法是什么?我有一个IP地址文件,我只想报告计数超过最大变量的地址。

awk '{a[$0]++}END{for(i in a){if(a[i] > **2**){print i}}}' a.txt 

尝试1:

max=5
awk '{a[$0]++}END{for(i in a){if(a[i] > max){print i}}}' a.txt

尝试2:

$max, max {max}

由于

问题基于以下链接:

Stackoverflow - https://stackoverflow.com/questions/20147878/how-to-sort-uniq-and-display-line-that-appear-more-than-x-times?newreg=67b23722d94743d48e149713f96b10fa

3 个答案:

答案 0 :(得分:2)

maxInShell=5
awk -v maxInAwk="$maxInShell" '{a[$0]++}END{for(i in a){if(a[i] > maxInAwk){print i}}}' a.txt

使用冗长的var-name来保存解释。

答案 1 :(得分:1)

awk -v max=5 '{a[$0]++}END{for(i in a){if(a[i] > max){print i}}}' a.txt

答案 2 :(得分:1)

如果您的awk脚本是另一个创建变量max的shell脚本的一部分,那么您可以使用awk选项-v脚本在awk脚本中使用该变量{1}}。

例如:

awk -v max="$max" '{a[$0]++}END{for(i in a){if(a[i] > max){print i}}}' a.txt