带变量的grep
Grep with a variable
我想 grep
通过使用一组搜索词并指定匹配后的字符数来获取多个文档。这是我试过的
grep -F -o -P "$(<search.txt).{0,4}" foo.txt
但我收到消息 'grep: conflicting matchers specified' 因为 -F
和 '-oP' 不能组合。它也不适用于“-E”。
-F
和 -P
是相互冲突的选项,就这么简单。第一个表示模式是固定字符串,第二个表示模式是 Perl 兼容的正则表达式。也许您打算改用 -f
,它从文件或进程替换中读取模式。
如果你想匹配文件中的任何模式,后跟 4 个字符,你可以使用类似这样的东西
grep -oP -f <(awk '{print [=10=] ".{4}"}' search.txt) file
这会动态地将模式添加到文件中的每一行。
或者,更便携和简洁的版本是这样的:
sed 's/$/.{0,4}/' search.txt | grep -f - -oP file
我想 grep
通过使用一组搜索词并指定匹配后的字符数来获取多个文档。这是我试过的
grep -F -o -P "$(<search.txt).{0,4}" foo.txt
但我收到消息 'grep: conflicting matchers specified' 因为 -F
和 '-oP' 不能组合。它也不适用于“-E”。
-F
和 -P
是相互冲突的选项,就这么简单。第一个表示模式是固定字符串,第二个表示模式是 Perl 兼容的正则表达式。也许您打算改用 -f
,它从文件或进程替换中读取模式。
如果你想匹配文件中的任何模式,后跟 4 个字符,你可以使用类似这样的东西
grep -oP -f <(awk '{print [=10=] ".{4}"}' search.txt) file
这会动态地将模式添加到文件中的每一行。
或者,更便携和简洁的版本是这样的:
sed 's/$/.{0,4}/' search.txt | grep -f - -oP file