0
votes

Comment rechercher un motif et extraire à l'aide de substrateur dans Awk

Essayer d'extraire un motif à l'aide de Substr AWK, mais je ne sais pas comment supprimer Newline. J'essaie d'obtenir le surclût-contrôleur-contrôleur-x xxx pré>

lorsque j'exécute le script Suivre AWK, il y a toujours une nouvelle ligne. p> xxx pré>

sortie: p> xxx pré>

veuillez indiquer comment supprimer la nouvelle ligne? J'utilise TR -D '\ N' à la fin, mais il enleva toute nouvelle ligne afin qu'il devienne une ligne. P>

awk -v RS="" -v FS="[|\n]" '{match($0,/display_name/); 
nodename=substr($0,RSTART+17, RLENGTH+10); gsub(/   /, "",nodename);;printf 
"(%s)\n",nodename}' ava-ipmi.txt

(overcloud-Controller-2)
(overcloud-Controller-0)
(overcloud-Controller-1)


0 commentaires

3 Réponses :


1
votes

Pourriez-vous s'il vous plaît essayer de suivre.

(overcloud-Controller-1)
(overcloud-Controller-2)


5 commentaires

il imprimé seulement () comme vous avez dit


@Andrews, mon code fonctionne bien pour moi pour des échantillons donnés. Pouvez-vous également vérifier une fois CAT -V INPUT_FILE et voyez s'il existe des caractères de contrôle M et laissez-moi savoir alors?


Je pense que je sais pourquoi. J'ai mis à jour sur la question principale. 3 lignes par analyse. J'ai copié les données d'ici et courez, cela fonctionne comme vous l'avez dit. mes données réelles sont diff (3 lignes par bloc)


@Andrews, alors ne travaille pas pour vos données réelles? Désolé, je n'obtiens pas à quel point l'échantillon montré et vos réels échantillons sont différents?


Ravaindersing13, tu m'as donné une idée. Mon chemin fonctionne aussi. Mais je croyais que votre méthode fonctionne également. Les données copiées sur cette page ne sont pas formées correctement. Je vais mettre à jour ma page principale. Mais je vais accepter votre réponse aussi.



1
votes

Script de mise à jour et a commencé à fonctionner en fonction de l'idée de @ Ravaindersing13. Je viens d'ajouter Rs et FS devant Awk, c'est-à-dire. Merci.

awk -v RS="" -v FS="[|\n]" '{match($0,/display_name/); 
nodename=substr($0,RSTART+17, RLENGTH+10); gsub(/   /, "",nodename);printf 
"(%s)\n",nodename}' ava-ipmi.txt

(overcloud-Controller-2)
(overcloud-Controller-0)
(overcloud-Controller-1)


3 commentaires

Très gentil de votre part que vous partagez votre solution finale sur ce qui les intéressera. IMHO, je voudrais vous demander que vous pourriez ajouter cette réponse à ma réponse elle-même afin que tous les corrects soient corrects au même endroit. Mais encore une fois, c'est mon avis et un merci spécial de l'avoir partagé avec nous ++ vote à voix basse.


Merci à vous et à tout le monde ici!


Vous n'utilisez pas les champs du tout, le paramètre fs ne fait rien.



0
votes
$ awk -v RS= -F\' '{print "("$34")"}' file
(overcloud-Controller-1)
(overcloud-Controller-2)

0 commentaires