小编Jos*_*hua的帖子

使用 grep 读取行时

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

我知道您可以使用以下内容来比较来自 input.txt 的字符串列表,并在您的目标文件中找到它们,如下所示:

grep -f inputs.txt file_to_check
Run Code Online (Sandbox Code Playgroud)

我想要的是读取输入字符串的每一行并在循环中单独grep它们。

所以我尝试了以下方法:

cat inputs.txt | while read line; do if grep "$line" filename_to_check; then echo "found"; else echo "not found"; fi; done
Run Code Online (Sandbox Code Playgroud)

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

while read line
do
if grep "$line" file_to_check
  then echo "found"
else 
  echo "not found"
fi
done < inputs.txt
Run Code Online (Sandbox Code Playgroud)

与第一个相同,但从我发现的更好。

我知道它会逐行迭代,因为我可以用 echo $line 替换 grep 并打印每一行;但任一方法都不会返回类似 grep -f 的内容,而是显示:

not found
not found
not found
.
. etc.
Run Code Online (Sandbox Code Playgroud)

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

bash grep if-statement while-loop

4
推荐指数
2
解决办法
3万
查看次数

标签 统计

bash ×1

grep ×1

if-statement ×1

while-loop ×1