Procurando por uma string e imprime a primeira coluna da primeira linha com awk

1

Eu sou relativamente novo em awk . Eu queria criar um comando rápido para encontrar o número do processo do meu pai Nodejs. Eu saí com isso:

ps aux | awk '/node/' | awk 'NR == 1 {print $1}'

No entanto, acho que deve haver uma maneira de combinar os dois comandos awk em um único. O que é uma maneira mais compacta de escrever isso?

EDITAR:

Embora pgrep seja mais adequado para essa tarefa em específico, eu ainda gostaria de saber como pesquisar e imprimir a primeira linha com awk .

    
por Alberto Rivera 08.09.2016 / 20:39

1 resposta

1

Você não precisa de nenhum processamento de texto na saída de ps , existe uma ferramenta dedicada exatamente para esse propósito, chamada pgrep .

Faça simplesmente:

pgrep node

em vez da string node , você pode usar um padrão Regex.

Para uma saída detalhada com o nome do processo:

pgrep -l node

Para obter o nome do comando também:

pgrep -a node

Verifique man pgrep para ter mais ideia.

se você insistir em usar awk on ps e mesclar dois awk s como um, faça:

ps aux | awk '/node/ {print $1; exit}' 
    
por 08.09.2016 / 20:42