GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Comment Grep Pour Un Mot Spécifique Et Saisir Du Texte?

J'ai un fichier texte qui répertorie un nom d'hôte et dans la ligne directement sous indique les résultats d'un ping d'un minion de sel. Voici un exemple de sortie :

T5F6Z12:
   Minion did not return. [Not connected]

Je dois d'abord être en mesure d'identifier si le texte (Minion n'est pas revenu) existe et si c'est le cas, saisissez le nom d'hôte associé à l'erreur afin que je puisse exécuter d'autres commandes sur ce serveur.

J'ai commencé par ceci :

if grep -q "Minion" /srv/salt/test/ping_results
then
    

Je suis donc presque sûr que je dois chercher le mot "Minion" car il n'apparaîtra que pour les serveurs qui ont échoué au test. Mais une fois que j'ai identifié son existence, je ne sais pas comment récupérer le nom d'hôte associé au-dessus dans le fichier texte.

Réponse acceptée :

Vous pouvez utiliser -B1 pour imprimer également la ligne précédente, puis saisir uniquement la première ligne :

$ grep -B1 'Minion' ip.txt
T5F6Z12:
   Minion did not return. [Not connected]
$ grep -B1 'Minion' ip.txt | head -n1
T5F6Z12:

Ou faites-le avec awk :

$ awk '/Minion/{print p} {p=$0}' ip.txt
T5F6Z12:
$ awk '/Minion/{sub(/:$/, "", p); print p} {p=$0}' ip.txt
T5F6Z12

Ici p conserve la sauvegarde de la dernière ligne. Lorsque la ligne d'entrée contient Minion , puis il est imprimé. Notez que cela fonctionnera pour plusieurs correspondances contrairement au grep solution ci-dessus qui ne donne que la première correspondance.


Linux
  1. Comment rechercher un texte spécifique à l'aide de GREP sous Linux

  2. Comment désactiver une commande spécifique pour un utilisateur spécifique sous Linux

  3. Comment ajouter une ligne d'en-tête et de fin à un fichier sous Linux

  4. Linux recherche mot et affiche toute la ligne

  5. Comment puis-je trouver tous les fichiers contenant du texte spécifique sous Linux ?

Comment Grep pour plusieurs chaînes et modèles

Comment comparer et fusionner des fichiers texte sous Linux

Comment comparer et fusionner des fichiers texte sous Linux (partie 2)

Comment exécuter une commande pendant une durée spécifique sous Linux

Comment rechercher et supprimer des fichiers contenant un texte spécifique dans leurs noms sous Linux

Micro - Un éditeur de texte basé sur la ligne de commande pour Linux