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 sedcomandi 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:string1e così via. sedfiltrerà solo ciò che filtrerebbe prima, tranne per il fatto che ogni riga di output si apre con un numero.