gpt4 book ai didi

bash - 使用 grep 读取行

转载 作者:行者123 更新时间:2023-11-29 09:23:21 25 4
gpt4 key购买 nike

我正在尝试报告使用 grep 和 while 找到的行。

我知道您可以使用以下内容来比较 inputs.txt 中的字符串列表,并像这样在目标文件中找到它们:

grep -f inputs.txt file_to_check

我想要的是读取输入字符串的每一行,并在循环中分别对它们进行 grep。

所以我尝试了以下方法:

cat inputs.txt | while read line; do if grep "$line" filename_to_check; then echo "found"; else echo "not found"; fi; done

当我将输出重定向到文件时,这不会返回任何内容。

while read line
do
if grep "$line" file_to_check
then echo "found"
else
echo "not found"
fi
done < inputs.txt

与第一个相同,但我发现这样做更好。

我知道它逐行迭代,因为我可以用 echo $line 替换 grep 并打印每一行;但是这两种方法都不会像上面的 grep -f 那样返回任何东西,而是显示:

not found
not found
not found
.
. etc.

所以我正在寻找的是它会遍历每一行并使用 if 语句通过 grep 检查它以确定 grep 是否真的找到它的东西。我知道我可能没有所有正确的逻辑,但我想要的输出应该类似于:

Found *matching line in file_to_check* 
Found *matching line in file_to_check*
Not Found $line *(string that does not match)*
.
. etc.

最佳答案

您还可以使用 &&|| 运算符:

while read line; do
grep -q "$line" file_to_check && echo "$line found in file_to_check" || echo "$line not found in file_to_check"
done < inputfile > result.txt

grep 的-q 参数只是输出一个状态码:

  • 如果找到 $line,它会输出 0(真)&& 之后的命令将被计算
  • 如果没有找到,它输出1 (False) || 之后的命令将被评估

关于bash - 使用 grep 读取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35636229/

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