模糊重定向,grep 命令

模糊重定向,grep 命令

这是 Linux 教科书上的一个练习:给出一个输入和输出重定向的例子。我在网上找到了一个答案:

grep \$Id  <  *.c  > id_list

但是这个 *.c 似乎是问题所在。这个答案能解决吗?

答案1

由于 grep 可以读取传递给它的文件名称作为参数的文件,因此这里根本不需要输入重定向:

grep '$Id' -- *.c > id_list

默认情况下,如果*.c扩展为多个文件的列表,grep则会在每个匹配输出前加上找到该文件的文件名作为前缀;如果您不想要这样,请添加-h(或--no-filename) 开关。

对于递归搜索,您可以使用--include选项

grep -r --include='*.c' '$Id' . > id_list

答案2

无法使用<. 将多个文件重定向到输入(或者甚至是输出,对于输出您应该使用tee)。

为了演示一个工作示例,您可以使用类似以下内容:grep \$Id < 1.c > id_list

您还可以使用“此处字符串”类型的重定向来获取您想要的内容。

grep <<< $(cat *.c) > out

相关内容