如何使用 Ubuntu 终端搜索 ASCII 文本

如何使用 Ubuntu 终端搜索 ASCII 文本

我有一个文件,当我使用时file myFile我会返回myFile: ASCII text, with very long lines

然后我将其作为 .txt 文件打开,它在记事本中打开时会显示很多 IP 地址。例如,127.0.0.1 - - [20/Feb/2014:19:35:31 -0700] "GET /favicon.ico HTTP/1.1" 404 6008 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:27.0) Gecko/20100101 Firefox/27.0" 各行等等。

有没有办法搜索此 ASCII 文本以查找唯一的 IP 地址以及哪个地址具有最多的“命中率”?我很难找到这种类型的命令,因为我甚至不确定是否应该在 .txt 文件中打开它。

答案1

您可以使用grep提取 IP 地址,并使用sort+uniq计算命中次数:

grep -Po '^\d+(\.\d+){3}' filename | sort | uniq -c 
  • grep用于搜索与正则表达式匹配的文本
  • -o仅打印与表达式匹配的文本,而不是整行
  • -P启用 Perl 风格的正则表达式
  • ^\d+(\.\d+){3}- 匹配的字符串:
    1. 行首 ( ^) 后跟
    2. 任意数量的数字 ( \d+) 后跟
    3. 一个点和任意数量的数字 ( \.\d+) 重复 3 次 ( {3})
  • sort对输入进行排序
  • uniq -c打印排序输入中唯一条目的数量。

相关内容