Analyse de texte en utilisant awk ou sed dans UNIX. Extraire un numéro de port

Je dois extraire un certain numéro de port issu d’une commande de statut de processus (ps) et je ne suis pas sûr de savoir comment l’obtenir.

Par exemple, si j’avais cette ligne (ps -ef | grep “blahblahblah”):

xxremote -xcom.xx.management.xremote.port=9999 -xcom.xx.management.xxxremote.ssl=false 

Comment puis-je extraire le nombre “9999”? Remarque: Ceci est une partie d’une ligne très longue, et je ne peux pas utiliser, par exemple, awk, pour compter le nombre de champs après le signe “=”. Le nombre de signes changera.

J’ai essayé d’utiliser la commande cut mais je ne sais que l’utiliser avec des délimiteurs à un seul caractère, ce qui n’est pas ce dont j’ai besoin. Je pensais que peut-être awk ou sed ferait le tour? Je ne les connais pas. Merci beaucoup pour l’aide

ps -ef | grep “blahblahblah” “| awk …. (ou sed)

UPDATE: Clarification du fait que le numéro de port doit être extrait d’une longue ligne de texte et que l’utilisation d’une commande awk n’est pas requirejse.

 ps -ef | sed -n '/blahblahblah/s/^.*port=\([[:digit:]]\+) .*/\1/p' 

Cela le fera:

( mis à jour pour ne filtrer que les lignes contenant xremote.port= si les données ne sont pas encore filtrées)

 ps -elf | awk -F= '/xremote.port=/{print $2}' | awk '{print $1}' 

La première commande awk divise la ligne = résultant en ce que le 2ème champ est:

 9999 -xcom.xx.management.xxxremote.ssl 

la deuxième commande awk saisit le premier champ de ce qui est votre numéro.

 9999 

Dois-tu utiliser Awk? sed serait un meilleur choix …

Tant pis…

 ps -ef | awk '/blahblahblah/ { sub(".*port=", "") sub(" .*", "") print $0 }' 

La commande sub(a, b) dans awk substitue l’expression régulière a par la chaîne b (qui se trouve être vide dans mon cas. Il prend $ 0 qui représente la ligne retournée.

Comme je l’ai dit, sed serait plus simple:

 ps -ef | sed -n '/blahblahblah/s/^.*port=\([^ ]*\).*/\1/p' 

Notez que j’utilise sed pour sélectionner la ligne blahblahblah et effectuer la substitution.