在 grep 中使用位置参数

在 grep 中使用位置参数

我正在尝试应用位置参数,以便在项目文件中查找内容时更轻松地复制/粘贴字符串。

这个命令工作正常:

grep myString -R .

但这个命令不会:

grep "$1" -R . myString

我尝试了几种组合,包括单引号、使用括号等。

感谢任何关于如何在项目中递归搜索字符串的建议。

编辑:我尝试直接从终端使用此命令(而不是在 shell 脚本上)

答案1

你的问题很不清楚,我不确定我是否正确理解它。如果我的理解有误,我深表歉意。

但是,如果我理解正确的话,您希望能够以将搜索模式放在命令末尾的方式使用 grep,因为复制并粘贴到命令末尾比复制更方便并粘贴到命令的开头,特别是当您使用不同的搜索模式多次运行该命令时?

不幸的是,grep 的语法要求搜索模式出现在指定搜索位置之前。

在我看来,有两种解决方案。首先是定义一个函数:

您可以将其放入您的 中.bashrc,或者只为会话定义一次:

recgrep() {
    grep "$1" -R .
}

然后您可以像这样调用该函数:

recgrep myString

它会在当前文件夹中递归搜索 mystring。

另一种是使用ripgrep,默认情况下递归搜索,而不是 GNU grep。根据我的经验,它也比 GNU grep 更快。

rg myString

相关内容