我怎样才能简化 Linux 中由 cat 管道传输到 grep 的这个命令?

我怎样才能简化 Linux 中由 cat 管道传输到 grep 的这个命令?

我怎样才能简化 Linux 中通过cat管道传输到的这个命令grep

cat foo*.txt | grep cow

有人告诉我,这样做是错误的。为什么呢?

答案1

您可以将文件名传递给grep

grep 牛 foo*.txt

cat这是“错误的”,因为你在不需要它的时候却使用它,事实上。

答案2

出于对前几位作者工作的尊重,我想指出的是,这两个命令的作用(略有)不同。原作者的命令将所有 foo*.txt 文件连接起来,并搜索连接的结果一次查看字符串“cow”是否出现。@Patrice Levesque 的命令执行 N 次搜索,对 N 个匹配文件分别执行一次。

尽管不可否认这些命令很模糊且很做作,但还是有可能出现 OP 命令有效而非免费命令失败的情况:

$ for C in w c o; do printf '%s' "$C" > foo-$C.txt; done
$ grep cow foo*.txt
$ cat foo*.txt | grep cow
cow
$ rm foo*
$ printf "wilco" > foo-1.txt
$ cp foo-1.txt foo-2.txt
$ grep cow foo*.txt
$ cat foo*.txt | grep cow
wilcowilco

我的观点是不是这可能是错误的方法,这取决于您要做的事情。

相关内容