Linux 用于字符串和打印的Grep目录的Perl脚本

Linux 用于字符串和打印的Grep目录的Perl脚本,linux,bash,perl,grep,Linux,Bash,Perl,Grep,我想创建一个perl或bash脚本,它将读取键盘输入并分配一个变量,在当前充满Snort日志的目录中递归执行固定字符串grep,然后自动tcpdump匹配的文件,grep其输出,并将指定的行打印到终端。有人知道这应该如何工作吗 以下是我希望从脚本中获得的方法示例: 步骤1:读取键盘输入并将其分配给名为string的变量 步骤2命令:grep-Fr“$string” 步骤2输出:snort.log.1470609906匹配 步骤3命令:tcpdump-rsnort.log.1470609906 |

我想创建一个perl或bash脚本,它将读取键盘输入并分配一个变量,在当前充满Snort日志的目录中递归执行固定字符串grep,然后自动tcpdump匹配的文件,grep其输出,并将指定的行打印到终端。有人知道这应该如何工作吗

以下是我希望从脚本中获得的方法示例:

步骤1:读取键盘输入并将其分配给名为string的变量

步骤2命令:grep-Fr“$string”

步骤2输出:snort.log.1470609906匹配

步骤3命令:tcpdump-rsnort.log.1470609906 | grep-F“$string”C-10

步骤3输出:


下面是一些bash代码:

s="google.com"
grep -Frl "$s" | \
    while IFS= read -r x; do
        tcpdump -r "$x" | grep -F "$s" -C10
    done

idk是关于perl的,但您只需在shell中即可轻松完成:

str="google.com"
find . -type f -name 'snort.log.*' -exec grep -FlZ "$str" {} + |
xargs -0 -I {} sh -c 'tcpdump -r "{}" | grep -F '"$str"' -C10'

为什么是Perl?为什么不直接使用grep?尝试自动化这个过程。我希望能够键入类似perl grep.pl“google.com”的内容,并在幕后完成所有工作。非常感谢redneb。有没有一种方法可以使“google.com”成为一个基于grepping之前的输入的变量?我指的是一个通过键盘输入分配的变量。我尝试了以下操作,但似乎试图读取作为文件名输入的字符串:#/bin/bash read-p“输入要搜索的固定字符串:”string grep-Frl“$string”|\while IFS=read-rx;执行tcpdump-r“$x”grep-F“$string”-C 10 done您可以在脚本开头说
s=“$1”
。然后可以将字符串作为命令行参数传递给保存上述代码的脚本。如果您想从stdin中读取,请将第一行替换为
IFS=read-rs
。非常感谢,redneb.Done。再次感谢。这正是我需要的Ed。谢谢!