Bash 脚本过于占用资源

Bash script being too resource intensive

我在 bash 中编写了一个脚本,它基本上采用一个单词列表文件并检查它包含的每一行是否与另一个列表相对应,并将不匹配的行输出到 "uniques.txt"。不过我发现,这是非常耗费资源的,而且需要很多时间。因为我不是计算机科学家或工程师,所以我真的不知道金属中发生了什么。我听说 "C" 是一种很棒的语言,因为这个问题...这是代码的一部分:

if [[ "" =~ ^\-i(.*)+$ ]]; then
    echo "[*] Testing lines in \"""\" against \"""\"..."
    for string in $(cat ""); do
        if ! cat "" | grep -x "$string" &>/dev/null; then
            echo "$string" >> uniques.txt
        fi
    done
fi

此脚本的示例用法为:"$script" -i "$wordlist" "$wordlist_to check_against"。 文件的内容将是中间没有空格的字符串,每行一个,如:

johnson
peter
newyork
amsterdam

你匹配 $1 的正则表达式毫无意义。第一个参数应以 -i 开头,后跟至少重复一次的任何内容(包括空字符串)。它与 ^-i 相同,即以 -i.

开头

"in \"""\"很奇怪。它打印 </code> 未加引号,即如果它包含空格,它可能会显示错误的名称(例如文件 <code>a b 将显示为 a b)。

in $(cat表示从文件中逐个读取单词,即$2每行超过一个单词,则分别匹配。

您可以使用 grep -f 从文件中读取模式并避免导致缓慢的循环:

#! /bin/bash
if [[  =~ ^-i ]]; then
    echo "[*] Testing lines in \"\" against \"\"..."
    grep -vxf "" ""
fi