在 bash 内将两个 cat 语句合并为一个 cat 语句

Combining two cat statements into a single cat statement within bash

我想将 2 个不同的 cat 语句组合成一个 cat 语句

cat /dir1/file1.cfg | grep -q "linux"

cat /dir1/file2.cfg | grep -q "linux"

是否有可以在此处使用的 OR 操作对 2 个文件执行 grep -q "linux"

到目前为止你尝试了什么?

怎么样:

cat /dir1/file1.cfg /dir1/file2.cfg | grep -q "linux"

或使用子外壳:

(cat /dir1/file1.cfg; cat /dir1/file2.cfg) | grep -q "linux"

或者只是:

grep -q "linux" /dir1/file1.cfg /dir1/file2.cfg

这些都给出了相同的结果。最后是我会怎么写。

% (cat f1; cat f2) | grep -q "linux"
% (cat f1 f2) | grep -q "linux"
% grep -q "linux" f1 f2

根本不需要 cat - grep 会很乐意从多个文件中获取输入;通常,您需要告诉它不要在输出行前加上文件名前缀,但由于您使用的是 -q,即使那样也没有必要:

grep -q "linux" /dir1/file[12].cfg

(我使用了 shell glob 来保存在那里写入文件名的重复部分)。