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.