Não é grep , é ps . Adicione as opções -ww
( ps -efww
) para dizer para sempre exibir linhas completas.
Se eu executar um comando como:
watch "ps -ef | grep '^foo.*bar'"
e a linha de saída correspondente de ps -ef
é uma linha longa como
foo <lots and lots of text here> bar
se esta linha é saída é afetada pelo tamanho do terminal. Por exemplo, se o terminal estiver em tela cheia e esta linha couber na tela, a saída será mostrada no relógio. No entanto, se eu redimensionar a janela para metade do tamanho da tela para que a barra seja truncada da tela, a linha grep desaparecerá completamente (presumivelmente, a linha será truncada antes de chegar ao grep no pipeline). Isso é um problema porque estou tentando extrair uma parte dessa linha para uso posterior no pipeline.
Existe alguma solução para isso para evitar que o tamanho do terminal afete a saída do grep dentro de um comando watch?
Eu não sei quais são as soluções certas , mas isso parece resolver o problema,
watch "COLUMNS=160 ps -ef | grep '^foo.*bar'"
às custas de ter as linhas do ps dobradas. Altere "160" para ser longo o suficiente para a linha "foo. * Bar" mais longa que você espera ver.