有没有一种简单的方法可以通过重定向或管道来执行此操作而不创建 FILE1?我想将 process2 应用于 process1 的输出正文,而不触及第一行和最后几行。
process1 >FILE1
head -n 3 FILE1
tail -n +4 FILE1|head -n -4|process2 # producing output
tail -n 4 FILE1
rm -f FILE1
答案1
我认为你可以通过管道处理它们:处理 process1 中的每一行,除了第一行和最后一行,比如说 3 行:
process1 | tail -n +4 | head -n -3 | process2
答案2
不确定这应该实现什么,但这里有一个解决方案,可以完全完成你正在做的事情,而无需使用中间文件:
#!/bin/bash
# prevent LF from being removed
export IFS=' '
output=`process1`
echo $output | head -n 3
echo $output | tail -n +4 | head -n -4 | process2 # producing output
echo $output | tail -n 4