GNU/Linux >> Tutoriels Linux >  >> Linux

Sed :imprimer uniquement la première occurrence d'une correspondance de modèle ?

Cette question a déjà des réponses ici :Comment sélectionner la première occurrence entre deux motifs les incluant

(7 réponses)
Fermé il y a 4 ans.

Plusieurs questions sont similaires à celle-ci, mais je n'ai pas trouvé de solution qui fonctionne lorsque je souhaite rechercher un motif sur plusieurs lignes. Ce qui suit

sed -n '/First string/,/Second string/ p' my.file

imprimera tous occurrences du modèle correspondant, mais je voudrais seulement la première occurrence. J'utilise GNU sed.

Réponse acceptée :

Utilisez q pour quitter explicitement lorsque le modèle de fin est atteint.

Dans GNU sed :

$ cat foo
foo
START
bar
END
blah
START another

$ sed -n '/START/,/END/p; /END/q' foo
START
bar
END

awk faciliterait peut-être le fait de ne pas répéter le motif de fin :

$ awk '/START/{p=1} p; /END/{exit}' foo
START
bar
END

Linux
  1. Imprimer la ligne précédente après une correspondance de modèle à l'aide de Sed ?

  2. Afficher tout le fichier jusqu'au match ?

  3. Une commande pour imprimer uniquement les 3 derniers caractères d'une chaîne ?

  4. Envelopper le premier caractère d'une chaîne à l'aide de Sed ?

  5. Freebsd – Bsd Sed :Remplacer uniquement la nième occurrence d'un motif ?

Remplacer le motif une fois que la nième correspondance est trouvée sur chaque ligne ? ?

Renvoyer uniquement la partie d'une ligne après un motif correspondant ?

Conserver uniquement la première ligne de chaque séquence de lignes consécutives correspondant à un motif ?

Majuscule première lettre de mots à l'aide de SED

Code de retour de sed pour aucune correspondance

sed - insérer une ligne après X lignes après la correspondance