我正尝试用这个同时打印 4 种不同的东西。
wc -l text.txt >processed.txt | cat text.txt | sort -r | tail -1 >>processed.txt | head -1 >>processed.txt | tail -5 | head -1 >>processed.txt
我的问题是它只将第一个 > 命令输出到文件,其余的都被忽略了,我试过移动它们,但无济于事。我会逐行执行 4 个输出,但这是因为它需要一行。
答案1
不要将其变成一个大管道:它看起来像是针对同一文件的 4 个独立操作。每个操作都需要访问原始文件内容。
wc -l text.txt >processed.txt
sort -r text.txt | tail -1 >>processed.txt
head -1 text.txt >>processed.txt
tail -5 text.txt | head -1 >>processed.txt
或者,将命令组合在一起并进行 1 次重定向:
{
wc -l text.txt
sort -r text.txt | tail -1
head -1 text.txt
tail -5 text.txt | head -1
} >processed.txt
如果您在编写时需要将其放在一行上,请添加一些分号:
{ wc -l text.txt; sort -r text.txt | tail -1; head -1 text.txt; tail -5 text.txt | head -1; } >processed.txt