opera em diferentes seções de stdin sem arquivo intermediário

0

Existe uma maneira simples de fazer isso com redirecionamentos ou canais sem criar FILE1? Eu quero aplicar o process2 ao corpo da saída do process1, sem tocar na primeira e última linha.

process1 >FILE1
head -n 3 FILE1
tail -n +4 FILE1|head -n -4|process2 # producing output
tail -n 4 FILE1
rm -f FILE1
    
por From Me 05.05.2016 / 22:31

2 respostas

0

Acho que você pode simplesmente canalizá-los: para processar todas as linhas do process1, exceto o primeiro e o último, digamos, 3 linhas:

process1 | tail -n +4 | head -n -3 | process2
    
por 05.05.2016 / 22:44
0

Não tenho certeza do que isso deve alcançar, mas aqui está uma solução que faz exatamente o que você está fazendo sem usar um arquivo intermediário:

#!/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
    
por 05.05.2016 / 23:02