Ho questo file:
sometext1{
string1
}
sometext2{
string2
string3
}
sometext3{
string4
string5
string6
}
Voglio cercare in questo file una stringa specifica e stampare tutto prima di questa stringa fino all'apertura {
e tutto ciò che segue questa stringa fino alla chiusura }
. Ho provato a raggiungere questo obiettivo con sed, ma se provo a stampare tutto nella gamma, /{/,/string2/
ad esempio sed stampa questo:
sometext1{
string1
}
sometext2{
string2
sometext3{
string4
string5
string6
}
Se cerco la stringa "string2" ho bisogno che l'output sia:
sometext2{
string2
string3
}
Grazie.
grep -n '' <infile | sed ...
. I sed
comandi dovranno essere modificati; in particolare i bit di /
indirizzo /
che cercano ^
ancore di cima linea. Quindi, se si sta utilizzando la mia risposta probabilmente si potrebbe fare: grep -n '' | sed 'H;/{$/h;/^[^:]*:}/x;/{\n.*PATTERN/!d'
. Tutte le righe di output avranno il prefisso con i numeri di riga del file originale seguiti da due punti simili 1:sometext1{\n2:string1
e così via. sed
filtrerà solo ciò che filtrerebbe prima, tranne per il fatto che ogni riga di output si apre con un numero.