Shell脚本字符串搜索,其中'#';不在第一个字符位置

Shell脚本字符串搜索,其中'#';不在第一个字符位置,shell,find,grep,xargs,Shell,Find,Grep,Xargs,此字符串搜索由Paul.R(非常感谢Paul)提供: **find dir-type f-print0 | xargs-0 grep-f-f strings.txt** 注意,我使用上面的search参数在shell脚本中对硬编码路径名执行递归目录搜索。但是,由于Unix环境(TRU64)的限制,我无法使用GREP-r开关执行目录搜索。因此,使用上述解决方案 作为一个附加条件,我想扩展这个搜索参数,以排除正在搜索的字符串的第一个前导字符为“#”(注释符号)的任何文本 如有任何反馈,我们将不胜感激

此字符串搜索由Paul.R(非常感谢Paul)提供:

**find dir-type f-print0 | xargs-0 grep-f-f strings.txt**

注意,我使用上面的search参数在shell脚本中对硬编码路径名执行递归目录搜索。但是,由于Unix环境(TRU64)的限制,我无法使用GREP-r开关执行目录搜索。因此,使用上述解决方案

作为一个附加条件,我想扩展这个搜索参数,以排除正在搜索的字符串的第一个前导字符为“#”(注释符号)的任何文本

如有任何反馈,我们将不胜感激


谢谢…Evan

我假设您只是试图限制您发布的命令的输出结果。如果是这样的话,那怎么样

find dir-type f-print0 | xargs-0 grep-f-f strings.txt | grep-v'^#'


最后一个管道命令将忽略与regex^#(以#char开头)匹配的所有行。

如果文件的路径和文件包含在strings.txt中,则此解决方案将不起作用,但在您的情况下可能会起作用

find dir -type f -print0 | xargs -0 grep -v '^#' | grep -F -f strings.txt

帕特里克,谢谢你的反馈。不幸的是,这还不够。我发布的原始命令从第一个字符位置开始输出字符串所属的路径名和文件。我需要它来识别满足搜索条件的脚本。如果我grep结果集,注释符号可以存在于任何字符位置。我意识到在这种情况下我可以省略“^”符号,但是,我如何区分“#”作为注释的一部分而不是该行任何部分的字符?我试图实现的是首先过滤掉所有脚本中注释以位置1开头的所有行,然后将结果集输入到这些脚本中的路径名搜索中。1。为了过滤掉散列作为注释信号的数据,而不是散列作为字符的数据,意味着您必须弄清楚在代码中,散列作为字符文字的信号是什么。2.这个命令是用于一次性项目(我们可以进行多次传递)还是用于其他目的?我不得不稍微弄乱了你原来的帖子,但是这有帮助吗(你可以重新插入你的第二个grep来获得我删除的功能——find.-type f-print0 | xargs-0 cat | grep-v'^[\t]*.| grep-v^$--这应该可以让你开始了