相关疑难解决方法(0)

Bash脚本:计算文件中的唯一行

情况:

我有一个大文件(数百万行),包含几小时网络捕获的IP地址和端口,每行一个ip /端口.行具有以下格式:

ip.ad.dre.ss[:port]
Run Code Online (Sandbox Code Playgroud)

期望的结果:

记录时收到的每个数据包都有一个条目,因此有很多重复的地址.我希望能够通过某种类型的shell脚本来运行它,这将能够将其减少到格式的行

ip.ad.dre.ss[:port] count
Run Code Online (Sandbox Code Playgroud)

where count特定地址(和端口)的出现次数.不需要做任何特殊工作,将不同的端口视为不同的地址.

到目前为止,我正在使用此命令从日志文件中删除所有IP地址:

grep -o -E [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(:[0-9]+)? ip_traffic-1.log > ips.txt
Run Code Online (Sandbox Code Playgroud)

从那里,我可以使用一个相当简单的正则表达式来清除我的地址发送的所有IP地址(我不关心)

然后我可以使用以下内容来提取唯一条目:

sort -u ips.txt > intermediate.txt
Run Code Online (Sandbox Code Playgroud)

我不知道如何通过排序以某种方式聚合行计数.

bash

111
推荐指数
3
解决办法
7万
查看次数

管道如何在Bash中工作的简单解释是什么?

我经常在Bash中使用管道,例如:

dmesg | less
Run Code Online (Sandbox Code Playgroud)

虽然我知道这是什么输出,它需要dmesg并让我滚动它less,我不明白|它在做什么.它恰恰相反>吗?

  • 对于什么有简单或隐喻的解释|
  • 在一条线路中使用多个管道时会发生什么?
  • 管道的行为在Bash脚本中出现的位置是否一致?

bash pipe

59
推荐指数
7
解决办法
5万
查看次数

标签 统计

bash ×2

pipe ×1