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.