gpt4 book ai didi

python - 我如何围绕 ngrep 编写突出显示匹配项的包装器?

转载 作者:行者123 更新时间:2023-11-28 20:00:20 26 4
gpt4 key购买 nike

我刚刚了解到 ngrep ,一个很棒的程序,可让您轻松嗅探与特定字符串匹配的数据包。

唯一的问题是很难在大块输出中看到匹配项。我想编写一个包装器脚本来突出显示这些匹配项——它可以使用 ANSI 转义序列:

echo -e 'This is \e[31mRED\e[0m.'

我最熟悉 Perl,但我对 Python 或任何其他语言的解决方案非常满意。最简单的方法是这样的:

while (<STDIN>) {
s/$keyword/\e[31m$keyword\e[0m/g;
print;
}

但是,这不是一个好的解决方案,因为 ngrep 会在收到不匹配的数据包时打印出不带换行符的散列标记,并且上面的代码将禁止打印这些散列标记,直到脚本看到换行符。

有没有办法在不抑制哈希标记立即出现的情况下进行突出显示?

最佳答案

这似乎可以解决问题,至少比较了两个窗口,一个运行直接的 ngrep(例如 ngrep whatever),另一个通过管道传输到以下程序(使用 ngrep whatever | ngrephl target-string)。

#! /usr/bin/perl

use strict;
use warnings;

$| = 1; # autoflush on

my $keyword = shift or die "No pattern specified\n";
my $cache = '';

while (read STDIN, my $ch, 1) {
if ($ch eq '#') {
$cache =~ s/($keyword)/\e[31m$1\e[0m/g;
syswrite STDOUT, "$cache$ch";
$cache = '';
}
else {
$cache .= $ch;
}
}

关于python - 我如何围绕 ngrep 编写突出显示匹配项的包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/214059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com