【问题标题】:grep: piping into grep -r doesn't work correctgrep:管道进入 grep -r 无法正常工作
【发布时间】:2020-09-07 14:02:38
【问题描述】:

我的 grep 命令别名为 'grep -r' ,在新的 grep 版本中它会导致我出现以下问题: 当将一个 grep 传递到另一个 grep 时,第二个 grep 不会从第一个 grep 的结果中搜索我想要的内容,但它应该像新的 grep 一样搜索整个文件夹。例如:

grep -r "something" folder | grep -r "something2"

第二个 grep 在整个文件夹中执行搜索,而不是仅搜索第一个 grep 的输出。发生这种情况是因为 -r 标志,没有它一切都很好。 假设我不想从我的 grep 别名中删除这个 -r 标志,有什么解决方案吗?

【问题讨论】:

  • 第二个可以使用\grep,它会覆盖别名
  • 另一个建议是使用ripgrep,它默认执行递归搜索并处理标准输入
  • TNX! ripgrep 效果很好!我可以将我的 grep 别名为 ripgrep。但是 ripgrep 是否具有与 grep 相同的属性?相同的标志和所有?
  • 请不要将 ripgrep 别名为 grep,使用默认的 rg 名称并将 grep 分开...不,rg 没有相同的功能,并且某些标志不同.. 我有一个tutorial 如果你想了解基础知识

标签: grep pipe tcsh


【解决方案1】:

对不起,第二个grep -r 没有意义:

grep -r 表示 grep 递归,所以不要只看当前文件夹,还要看 sub-、subsub- 和更深的文件夹。

对于第一个grep -r,我可以与之相关:在文件夹和所有子文件夹中查找“某物”,但第二个:一旦您在一个特定文件中找到“某物”,我希望您验证“something2”的所有 sub-、subsub- 和更深的文件夹。

在检查单个文件时如何更深入地了解目录结构?

我建议您不要在您的 grep 别名中添加 -r 开关。

【讨论】:

  • 但是每次我想递归搜索某些东西时,我都必须添加 -r 。使用次数更多...
  • @maorshariki:你想做什么?您正在寻找文件中的一段文本,该文件位于某个目录结构的某个位置。一旦您在某个目录中的特定文件中发现了该段文本,您究竟想做什么?
  • 我想在那段文本中执行搜索以在其中找到一些内容而不从我的 grep 别名中删除 -r 标志,因为这样我就必须在每个时间我想搜索一个目录
  • 很抱歉,但我认为使用grep -r 作为grep 的标准别名不是一个好主意:我已经在UNIX 平台上工作了好几年,而不是grep -r,我一直使用以下系统:find <dir> -exec grep "something" {} /dev/null \;。我承认,这是相当多的写作,但它非常灵活并且可以满足所有目的。
  • 没关系,我有办法。就像上面建议的那样,我正在使用 ripgrep... tnx!
猜你喜欢
  • 1970-01-01
  • 2013-06-02
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多