Estou tendo dificuldade em entender a seguinte função. É suposto colorir linhas começando com -
ou com {-
using blue
. Como as linhas não correspondentes ainda são impressas?
kls ()
{
rst='tput sgr0'
ctp='tput bold; tput setaf 39'
sed -E "s/^ *\{?-.*/${ctp}; printf '%s' '&';${rst}/e" <<< "$@"
}
As duas variáveis
rst
ectp
em seu código contêm comandos shell. Seria melhor se você simplesmente os fizesse conter a saída desses comandos, pois isso nos permite descartar a/e
opção insegura para o comando de substituição em suased
invocação GNU.A questão parece perguntar como evitar a impressão de linhas não correspondentes. Você faz isso, neste caso, usando a
-n
opção comsed
, que desabilita a saída padrão de cada linha ao final do script de edição. Em seguida, você adiciona a/p
opção ao comando de substituição, o que fará com que a linha modificada pela substituição seja gerada (as linhas que não correspondem à expressão regular não serão exibidas).Para tornar isso um pouco mais parecido com um filtro, solte o redirecionamento em
sed
:Você usaria isso com
ou
ou