我想将两个文件的内容重定向到一个名为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]
将的输出发送file1
至stdout
。
下一个:
&&
如果前面的内容具有它所执行的退出状态,则告诉它运行后面的内容0
。
最后,
cat [file2] | grep "lol" -B 5 -A 25 > ooo.txt
使用as to 的stdout
out ,然后使用将该输出重定向到文件 ooo.txt。cat [file2]
stdin
grep "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