sed '1,/pattern1/d;/pattern2/,$d' app.log deve fazer o truque
se você quisesse que um script fosse executado da maneira que você menciona, então uma função em seu ~ / .bashrc como o abaixo deveria ser:
time_log() {
pattern1=$1
pattern2=$2
file=$3
sed "1,/$pattern1/d;/$pattern2/,$d" "$file"
}
então você pode executar:
time_log "2018-08-29 07:44:" "2018-08-29 07:46:" app.log
editar:
removeu cat desnecessária
Para incluir a primeira linha, a maneira mais fácil seria apenas grep da primeira linha antes de executar o sed :
time_log() {
pattern1=$1
pattern2=$2
file=$3
grep "$pattern1" "$file"
sed "1,/$pattern1/d;/$pattern2/,$d" "$file"
}
Embora haja provavelmente uma maneira melhor de fazer isso com sed se algum mestre de sed quiser entrar em contato.