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
之后的标志已被视为路径。
我是 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
之后的标志已被视为路径。