遍历目录中的所有.txt文件,查找特定值,并计算.txt文件中所有值的总和

时间:2017-07-19 18:04:37

标签: bash

我在Mac上,在给定目录中,我有466个.txt文件。在文件中,某处出现了这一行:

Host2 Total size: 1443504 bytes (1.377 MiB)

该行可以在文件中的任何位置。

如果该行没有显示,那么这一行

[LOGIN]: 2 NO LOGIN Failed - Invalid username or password.

我需要遍历所有这些文件并计算总字节数。我还需要创建一个记录NO LOGIN错误的文件名列表。

我知道我可能需要read和grep,但这超出了我的CLI深度。非常感谢帮助!

1 个答案:

答案 0 :(得分:2)

您可以使用awk提取第4个字段中的字节数并求和:(感谢@mark-setchell

awk '/^Host2 +Total +size: +[0-9]+ bytes / { sum += $4 } END { print sum+0 }' *.txt

您可以使用grep获取包含“NO LOGIN Failed”的文件列表:

grep -lF 'NO LOGIN Failed' *.txt

我使用了一些懒惰的模式。 如果你看到误报, 让他们更严格。 例如,最后一个grep可以与该行完全匹配:

grep -lFx '[LOGIN]: 2 NO LOGIN Failed - Invalid username or password.' *.txt