📜  没有模式的 grep - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:40:43.660000             🧑  作者: Mango

没有模式的 grep - Shell-Bash

简介

在 Shell-Bash 中,grep 是一个常用的命令,用于在文件中查找并显示匹配某个模式的行。通常情况下,我们需要提供一个模式作为 grep 命令的参数。

但是,grep 也支持一种神奇的用法:当没有提供模式参数时,grep 会把它的标准输入视为模式,并在标准输入中查找匹配该模式的行。这种用法看似不起眼,但实际上非常强大和灵活。

使用方法
基本使用方法

下面是一个简单的例子,假设我们有一个文件 file.txt,我们想要查找该文件中所有包含字符串 hello 的行:

grep hello file.txt

这是最基本的使用方法,我们给 grep 命令提供了一个模式参数 hello 和一个文件参数 file.txt

没有模式的用法

我们考虑把上面的例子稍微改一下,不给 grep 命令提供任何模式参数,而是把模式通过管道传输给 grep 命令:

cat file.txt | grep

这时候我们就可以在标准输入中输入我们想要查找的模式了。比如说,我们输入 hello,然后按下回车键,grep 就会在标准输入中查找包含字符串 hello 的行,然后输出结果。

当然,这种方式用处远不止这些,我们可以通过管道输入任何模式,并且可以在任何程序中使用。比如说,我们可以利用 find 命令查找文件并把结果传输给 grep 命令进行过滤:

find . -name "*.txt" | xargs cat | grep

这个命令会在当前目录下查找所有扩展名为 .txt 的文件,然后把文件内容通过 xargs 命令传输给 cat 命令,最后把输出通过管道传输给 grep 命令进行过滤。

结论

grep 的神奇用法为我们在 Shell-Bash 环境下提供了一种特别灵活和强大的文本过滤方式。我们只需要将模式通过管道传输给 grep 命令,就可以充分利用 grep 的强大查找功能。