On Thu, Oct 20, 2022 at 10:30:12PM +0100, Mr Roooster wrote: > On Fri, 7 Oct 2022 at 14:19, Matthias Petermann <m...@petermann-it.de> wrote: > > > > > > - Can what I have in mind already be solved (differently or more > > elegantly) with existing tools from the base system? > > > It's not elegent, but depending on your shell you can abuse tee to do > something like: > > $ echo -e "alert|alert thing\ninfo|less important\n" | > tee >(grep "^info|" | cut -c6- | logger -puser.notice) | > grep "^alert|" | cut -c7- | logger -plocal0.notice
Uh... much easier than that, just using the standard shell's builtin capabilities (and /usr/bin/logger): $ printf "alert alert thing\ninfo less important\n" | (while read typeofmsg rest; do case $typeofmsg in alert) prio="user.notice";; info) prio="local0.notice";; esac logger -p $prio $rest done) You can save the case...esac when you put the raw prio value as first word of the line (whitespace separated from the rest of it): $ printf "user.notice alert thing\nlocal0.notice less important\n" | (while read typeofmsg rest; do logger -p $typeofmsg $rest done) (Btw: If you insist to use cut, use ...|cut -d\| -f2-|... instead, it's more robust when you haven't to count the characters on each reedit of the code.) Regards -is