将两个greps的输出合并为一个文件

问题描述 投票:2回答:3

所以我有以下两个命令:

grep 'substring1' file1.txt > outfile.txt
grep 'substring2' file2.txt > outfile.txt

我想将两个greps合并在一起,并将它们全部写入outfile.txt作为一个命令。这样的命令怎么样?

linux bash shell terminal command-prompt
3个回答
3
投票

您可以轻松地将这两个命令组合在一起,例如:

grep 'substring1' file1.txt > outfile.txt ; grep 'substring2' file2.txt >> outfile.txt

“;”将两个命令分开后,第二个命令将在第一个命令完成后执行。

“>>”表示将输出附加到现有文件。 (如果文件不存在,则“>”没有区别)

您可以将此简单模式用于许多不同的任务。


4
投票

两种可能性:

  • 将它们分组: { grep 'substring1' file1.txt grep 'substring2' file2.txt } > outfile.txt 或者内联: { grep 'substring1' file1.txt; grep 'substring2' file2.txt; } > outfile.txt (注意结束大括号前的分号)。
  • 使用appending redirection operator >>进行第二次重定向: grep 'substring1' file1.txt > outfile.txt grep 'substring2' file2.txt >> outfile.txt

考虑到文件只打开一次,分组方法是可取的。如果你需要做一些写入两个greps之间的stdout的东西,第二种方法更可取。


2
投票

好吧,首先,你列出这些命令的方式,他们将无法完成。你没有提供文件名,因此,grep将使用stdin,除非你给它一些输入,它将阻止。

话说回来....

如何在一个命令中完成所有操作?

egrep 'substring1|substring2' source_file.txt > outfile.txt

qazxsw poi允许匹配多个搜索字符串,由“|”分隔。

希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.