如何过滤目录下所有文件中计数最多的第一行var(还应检查其他目录)?
我想找到我文件中的所有行(我希望pwd
下的许多文件夹中的所有文件)第一个变量,其中第一个var显示的次数最多
我试图像这样使用awk
:
awk -f : { print $1} FILENAME
编辑: 我将解释目的: 我有一个服务器,我想过滤他的日志因为我有一个IP,每天重复100次第一个变量行是IP 我想找到什么是重复问题的ip:我有两个服务器因此通过检查一个日志100次来检查这将不会有效我希望这个脚本将帮助我找出重复的IP ... < / p>
答案 0 :(得分:2)
您应该重写您的问题以使其更清晰。我知道你想知道哪一行在一组文件中最常见。为此,我会用这个:
head -qn 1 * | sort | uniq -c | sort -nr
head
打印当前目录中每个文件的第一行。 -q
导致它不打印文件的名称; -n允许您指定行数。)
sort
按排序顺序对它们进行分组。
uniq -c
计算出现次数,即前一次排序后每个块中重复行的数量。
sort -r
以最受欢迎的第一个命令他们。 -r
意味着逆转;默认情况下,它按升序排序。
答案 1 :(得分:0)
不确定,如果这有帮助的话。问题不是那么清楚。
尝试这样的事情会有所帮助。
find . -type f -name "*.*" -exec head -1 {} \; 2>/dev/null | awk -F':' 'BEGIN {max=0;}{if($2>max){max=$2;}}END{print max;}'
find - 尝试使用任何名称和扩展名(type f
)查找当前目录中的所有文件,直到结束(*.*
)并获取每个文件的第一行。
awk - 将字段分隔符设置为:(-F:
)并在处理第一行BEGIN
之前将max设置为0。
获取第二个字段:($2)
检查是否$2 > current_max_value
。如果是,则将当前字段设置为新的最大值。
在处理结束时,所有行(当前目录下所有文件的第一行)END
将打印最大值。