Com o GNU sed:
sed -n '132 {/^#termcapinfo[[:space:]]*xterm Z0=/q}; $q1'
Como funciona
-
132 {/^#termcapinfo[[:space:]]*xterm Z0=/q}
Na linha 132, verifique o regex
^#termcapinfo[[:space:]]*xterm Z0=
. Se for encontrado,q
, com o código de saída padrão de 0. O restante do arquivo será ignorado. -
$q1
Se chegarmos à última linha,
$
, saia com o código de saída 1:q1
.
Eficiência
Como não é necessário ler além da 132ª linha do arquivo, essa versão é encerrada assim que alcançamos a 132ª linha ou o final do arquivo, o que ocorrer primeiro:
sed -n '132 {/^#termcapinfo[[:space:]]*xterm Z0=/q; q1}; $q1'
Manipulando arquivos vazios
A versão acima retornará true para arquivos vazios. Isso porque, se o arquivo estiver vazio, nenhum comando será executado e o sed sairá com o código de saída padrão 0. Para evitar isso:
! sed -n '132 {/^#termcapinfo[[:space:]]*xterm Z0=/q1; q}'
Aqui, o comando sed sai com o código 0, a menos que a string desejada seja encontrada, caso em que saia com o código 1. O!
anterior diz ao shell para inverter esse código para voltar ao código que queremos. O modificador !
é suportado por todos os shells do POSIX. Esta versão funcionará mesmo para arquivos vazios. (Dica do chapéu: G-Man)