在 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 来保存在那里写入文件名的重复部分)。
我想将 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 来保存在那里写入文件名的重复部分)。