GNU/Linux >> Linux Esercitazione >  >> Linux

Sed:stampa solo la prima occorrenza di una corrispondenza di pattern?

Questa domanda ha già risposte qui :Come selezionare la prima occorrenza tra due pattern inclusi

(7 risposte)
Chiuso 4 anni fa.

Diverse domande sono simili a questa, ma non ho trovato una soluzione che funzioni quando voglio cercare uno schema su più righe. Il seguente

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

stamperà tutto occorrenze del modello abbinato, ma vorrei solo la prima occorrenza. Sto usando GNU sed.

Risposta accettata:

Usa q per uscire esplicitamente quando viene raggiunta la sequenza finale.

In GNU sed:

$ cat foo
foo
START
bar
END
blah
START another

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

awk forse renderebbe più facile non ripetere lo schema finale:

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

Linux
  1. Corrispondenza di pattern multilinea utilizzando Sed, Awk o Grep?

  2. Restituisci solo la stringa abbinata in Sed?

  3. Schema di sostituzione dopo l'ennesima corrispondenza trovata su ogni riga??

  4. Restituire solo la parte di una linea dopo uno schema corrispondente?

  5. Un comando per stampare solo gli ultimi 3 caratteri di una stringa?

Avvolgi il primo carattere di una stringa usando Sed?

Freebsd – Bsd Sed:sostituire solo l'ennesima occorrenza di uno schema?

Trova solo la prima occasione usando solo Grep?

Stampa un file, saltando le prime X righe, in Bash

sed da inserire solo alla prima corrispondenza

sed - inserisce riga dopo X righe dopo la corrispondenza