我怎样才能简化 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
我的观点是不是这可能是错误的方法,这取决于您要做的事情。