get le Xème argument dans chaque ligne

Je voudrais get le deuxième argument dans une ligne de sortie. Par exemple:

ps aux 

me donne une sortie qui contient le CPU CPU-utilisation% dans la troisième colonne.

Comment puis-je filterr la sortie afin que je n'ai que cette colonne?

j'ai essayé

 ps aux | cut -f 3 

mais ça ne marche pas

voir aussi: Filtrage du Xème élément d'une ligne?

Il y a un certain nombre de façons d'accomplir ceci. Voici un exemple utilisant awk :

ps aux | awk '{print $3}'

L'argument $3 de la command print imprime le troisième champ, par défaut délimité par une séquence d'espaces, de chaque ligne.

Utilisation des options de format ps

ps vous permet de spécifier un format de sortie personnalisé.

 ps ax o pcpu 

La command ci-dessus renvoie une seule colonne de données d'utilisation du processeur.

Pourquoi cut ne fonctionne pas

Le séparateur par défaut de cut est le caractère de tabulation. ps utilise des espaces dans sa sortie, de sorte que vous devriez utiliser cut -d' ' -f3 pour sélectionner le troisième champ (vu que cut voit).

Le problème avec l'utilisation de la coupe est qu'il visualise tout ce qui est adjacent à un délimiteur en tant que champ. Depuis ps imprime plusieurs espaces adjacents entre les champs,

 $ ps aux ... para␣␣␣␣␣␣␣462␣␣0.0␣␣0.0␣␣13492␣␣1792␣tty1␣␣␣␣␣Ss+␣␣05:52␣␣␣0:00 root␣␣␣␣␣␣␣484␣␣1.8␣␣0.5␣137020␣45112␣?␣␣␣␣␣␣␣␣Ss␣␣␣05:52␣␣␣0:20 para␣␣␣␣␣␣␣490␣␣0.0␣␣0.0␣␣28072␣␣1708␣tty1␣␣␣␣␣S␣␣␣␣05:52␣␣␣0:00 ... $ ps aux | cut -d' ' -f3 ... ␣ ␣ ␣ ... 

cut va imprimer une colonne d'espaces si vous lui requestz le troisième champ. Pour aggraver les choses, le nombre d'espaces que ps sorties entre chaque champ n'est pas toujours uniforme entre les rangées, de sorte que vous ne pouvez pas utiliser cut -d' ' -f12 Vous obtiendriez des résultats comme celui-ci:

 ... 4.6 0.0 0.0 ␣ ␣ 0.0 0.1 ␣ ␣ ␣ ...