lcut() { local input if [ -p /dev/stdin ]; then input=$(cat -) else input=$(cat $1) shift fi echo $input | perl -slane '@pairs = /(\w+=?(?:"[^"]*"|[^\s]*))/g; @keys = split /\s+/, $args; foreach $key (@keys) { foreach $pair (@pairs) { ($k, $v) = split /=/, $pair; print $pair if $key eq $k; } }' -- -args="$*" }