ho le linee in text.txt come di seguito:linee find tra due modelli utilizzando sed
blah blah..
blah abc blah..
blah abc blah
blah blah..
blah blah..
blah blah..
blah efg blah blah
blah blah..
blah abc blah
blah abc blah
blah abc blah
blah abc blah
blah abc blah
blah blah..
blah efg blah blah
blah blah..
blah blah..
Voglio uscita le linee tra ogni ultima occorrenza di "abc" prima "EFG" e "efg" , per l'esempio di cui sopra, voglio uscita:
blah abc blah
blah blah..
blah blah..
blah blah..
blah efg blah blah
blah abc blah
blah blah..
blah efg blah blah
so sed può selezionare intervalli utilizzando due modelli, come:
sed -n '/abc/,/efg/p' test.txt
Howeve r l'uscita inizierà dalla prima occorrenza di "abc" anziché l'ultimo, l'uscita è la seguente:
blah abc blah..
blah abc blah
blah blah..
blah blah..
blah blah..
blah efg blah blah
blah abc blah
blah abc blah
blah abc blah
blah abc blah
blah abc blah
blah blah..
blah efg blah blah
Qualunque valorizzazione posso fare sulla linea di comando così l'uscita inizierà da last occorrenza di "abc"?
ho fatto qualche ricerca per capire questo, mi corregga se sbaglio: 1, sfuggito parentesi angolari sono opzionali, che indicano ciò che stiamo cercando perché sono parole. 2, il comando 'h' significa che salva lo spazio del modello nel buffer di mantenimento, 'H' significa accoda lo spazio del modello nel buffer di mantenimento, 'x' significa lo spazio del modello di scambio e il buffer di attesa. 3, l'intero comando selezionerà innanzitutto gli intervalli che iniziano con la prima riga contiene 'abc' e terminando con la seguente prima riga contiene 'efg', e quindi in ogni intervallo trova l'ultima riga contenente 'abc' e salva le righe seguenti fino alla riga contiene 'efg', e stampali – poiu2000
grazie @potong per fornire una soluzione così buona – poiu2000