重定向两个文件的内容

重定向两个文件的内容

我想将两个文件的内容重定向到一个名为ooo.txt.

我还想只使用第二个文件的一些特定行grep(在本例中为前 5 行,后 25 行)'哈哈') 不使用括号

这是我使用的命令:

cat [file1] &&  cat [file2] | grep  "lol" -B 5 -A 25 > ooo.txt

不幸的是,只有 的内容file 2写入文件中ooo.txt(但是grep尊重命令)。

我该如何解决这个问题?

答案1

这些命令完全按照设计工作。

第一的:

cat [file1]

将的输出发送file1stdout

下一个:

&&

如果前面的内容具有它所执行的退出状态,则告诉它运行后面的内容0

最后,

cat [file2] | grep  "lol" -B 5 -A 25 > ooo.txt

使用as to 的stdoutout ,然后使用将该输出重定向到文件 ooo.txt。cat [file2]stdingrep "lol" -B 5 -A 25> ooo.txt

以下是一些获取您想要的东西的方法:

第一个只是向第一个cat命令添加重定向并从那里开始。假设文件不存在或为空:

cat [file1] > ooo.txt &&  cat [file2] | grep  "lol" -B 5 -A 25 >> ooo.txt

如果该文件已存在且不为空,而您只想添加以下内容:

cat [file1] >> ooo.txt &&  cat [file2] | grep  "lol" -B 5 -A 25 >> ooo.txt

一个不太复杂的命令也可以工作:

{ cat [file1]; cat [file2] | grep  "lol" -B 5 -A 25; } > ooo.txt

大括号以及;两个cat命令之间和grep命令之后的 会将所有命令的输出重定向到文件ooo.txt。如果内容仅添加到文件中,请使用>>而不是>

答案2

这应该做你想做的。

cat [文件1] <(cat [文件2] | grep "lol" -B 5 -A 25) > ooo.txt

相关内容