J'ai besoin d'extraire les champs PID, UID et de commande de 'ps' et je l'ai essayé comme ceci:
ps -L u n | cut -f 1,2,13
Pour une raison quelconque, cela se comporte car il n'y a aucune commande de coupure. Il renvoie juste une sortie ps normale. Ensuite, j'ai essayé
ps -L u n | tr -s " " | cut -d " " -f 1,2,13
et cela renvoie un non-sens total. Ensuite, j'ai essayé de jouer avec et avec ça:
ps -L u n | tr -s " " | cut -d " " -f 2,3,14
et cela retourne en quelque sorte ce dont j'ai besoin (presque, et je ne comprends pas pourquoi cela fonctionne presque), sauf qu'il coupe le champ de commande au milieu. Comment puis-je obtenir ce dont j'ai besoin?
ps
imprime les séparateurs d'espace, mais cut
sans -d
utilise le caractère de tabulation. Le tr -s
serre les espaces ensemble pour obtenir plus de séparation que vous voulez, mais rappelez-vous qu'il y a le jeu initial d'espaces (réduit à un), c'est pourquoi vous devez ajouter 1 à chaque champ. En outre, il existe des espaces dans les commandes pour chaque mot. Cela devrait fonctionner:
ps -L u n | tr -s " " | cut -d " " -f 2,3,14-
Y a-t-il une raison particulière d'utiliser la coupe?
Je suppose que cela fera ce que vous voulez:
ps -eopid,uid,cmd
Vous pouvez utiliser awk pour nettoyer votre commande, comme ceci:
ps -L u n | awk '{ print $1,$2,$13 }'