Grep returns 使用多个标志时没有这样的文件或目录

Grep returns no such file or directory when using multiple flags

我是 bash 脚本的初学者。我刚开始写一个脚本,它检查 b.txt 的内容是否都可以在 a.txt 中找到。 (最好逐行)。我的代码如下:
grep -Ffw b.txt a.txt

如您所见,我想做固定字符串而不是 REGEX,我想检查 b.txt 文件中的所有内容,因为 b.txt 中有一些字符串,我想检查它们是否都存在于 a.txt 中。而且我当然也只想匹配整个单词。所以这些是要求,但是当我 运行 这个命令时它 returns 我一个错误说:
grep: w: No such file or directory

我在想 bash 中的标志可能有一些限制?对不起,我不太熟悉这种语言,没有阅读太多关于 MAN 页面等的信息。如果有人能帮助我解决这个难题,我将不胜感激 :) 此外,我想如果可能的话,我想添加一个 -q 也可以在匹配时抑制输出,现在我没有在示例中添加它,因为即使有 3 个标志也无法通过。那么有人可以在这里给我一些提示吗?提前致谢!

特此来自联机帮助页的一些解释:

OPTIONS
   Generic Program Information
   ...
      -F, --fixed-strings
              Interpret PATTERNS as fixed strings, ...
      -f FILE, --file=FILE
              Obtain patterns from FILE, ...
      -w, --word-regexp
              Select only those lines ...

如您所见,选项 -F-w 表示立即结束(因此 -F,-w, 中的逗号),但是 -f switch 后跟 FILE, 意味着它们属于一起。

我想保留订单 Ffw,这是可能的,但是您需要执行以下操作:

grep -Ff b.txt -w a.txt

如@kvantour 所述,解决方案只是将 -f 放在 b.txt 文件之前。
grep -Fwf b.txt a.txt
当它说 'no such file or directory' 时应该想到它,因为它清楚地表明 -f 之后的标志已被视为路径。