xargs参数列表在grep中的解决方法过长

对于文件的每一行,我需要搜索是否在另一个文件中找到了包含正则表达式的字符串。

问题在于文件很大,第一个为24MB,第二个为115MB。我已经尝试将$(cat file1)作为grep的第一个参数,但是它抱怨文件大小,然后我现在尝试使用xargs grep,但是存在相同的错误

如果我执行简单的字符串搜索工作

find . -name records.txt | xargs grep "999987^00086"
999987^00086^14743^00061^4

但是如果尝试使用cat作为参数来获取所有文件,则会失败

find . -name records.txt | xargs grep "$(records_tofix.txt)"
-bash: /usr/bin/xargs Argument list too long on grep
tbdys 回答:xargs参数列表在grep中的解决方法过长

使用-f选项:

grep -f records_tofix.txt

文件应在各自的行中包含每个模式。

find可以直接执行命令,而无需调用xargs+的{​​{1}}语法不会分别为每个值调用命令,而是类似于-exec填充整个命令行:

xargs
本文链接:https://www.f2er.com/3148295.html

大家都在问