2010-06-07 6 views
0

Je veux faire correspondre une partie d'une ligne par exemple dans la phrase: "Le super id = 42 ou quelque chose."Quel est un bon moyen de faire correspondre une partie d'une ligne en utilisant les outils de ligne de commande?

Je veux retourner le numéro 42.

echo "Le super id = 42 ou quelque chose" | grep -o 'id = [0-9] +' | sed 's/id = //'

Renvoie la bonne réponse, mais existe-t-il une manière plus élégante de résoudre ce problème, par exemple en utilisant un seul outil?

Répondre

0

Pour quelque chose de rapide et simple, c'est parfaitement bien. Vous pouvez tout faire dans une commande/déclaration avec perl mais grep + sed comme cela devrait fonctionner très bien.

Est-ce que cela fait partie d'une chaîne d'outils ou d'une application plus importante ou est-ce seulement pour vos propres besoins ponctuels?

+0

Il est vraiment juste pour un script, mais je l'ai couru dans ce genre de situation à quelques reprises, et je me demandais s'il y a un outil qui peut faire ce qui suit:/id = ([0-9] +/\ 1/sans trop de code supplémentaire. – Enfenion

0

-ou plutôt, a- version perl serait

echo "The super id=42 or something" | perl -ne '/id=(\d+)/ and print "$1\n"' 
Questions connexes