首页 > 解决方案 > 使用多个标志时,Grep 不返回此类文件或目录

问题描述

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

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

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

标签: grep

解决方案


特此来自手册页的一些解释:

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开关后跟FILE,with 表示它们属于一起。

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

grep -Ff b.txt -w a.txt

推荐阅读