Com -d " "
, o separador de campo é um (e apenas um) caractere de espaço. Ao contrário da divisão da palavra shell, cut
não trata espaço diferente de qualquer outro caractere. Portanto, cut -d " " -f2
retorna ""
em root 19
, assim como retornaria ""
para cut -d: -f2
em root:::19
.
Você precisaria apertar os espaços em branco para transformar qualquer sequência de espaço em um espaço:
ps aux | grep ata | tr -s ' ' | cut -d ' ' -f2
Ou use awk
em seu modo de geração padrão, ele não usa um separador, mas divide-se na lista de sequências de caracteres que não estão em branco:
ps aux | awk '/ata/{print $2}'
Neste caso, você pode querer usar:
pgrep -f ata
Ou pelo menos:
ps -eo pid= -o args= | awk '/ata/{print $1}'
Para corresponder apenas aos argumentos.