Tengo este archivo:
sometext1{
string1
}
sometext2{
string2
string3
}
sometext3{
string4
string5
string6
}
Quiero buscar en este archivo una cadena específica e imprimir todo antes de esta cadena hasta la apertura {
y todo después de esta cadena hasta el cierre }
. Traté de lograr esto con sed, pero si trato de imprimir todo en el rango, /{/,/string2/
por ejemplo, sed imprime esto:
sometext1{
string1
}
sometext2{
string2
sometext3{
string4
string5
string6
}
Si busco la cadena "string2", necesito que la salida sea:
sometext2{
string2
string3
}
Gracias.
grep -n '' <infile | sed ...
. Los sed
comandos deberán modificarse; específicamente los bits de /
dirección /
que buscan ^
anclajes de primera línea. Por lo tanto, si estuviera usando mi respuesta que probablemente se podría hacer: grep -n '' | sed 'H;/{$/h;/^[^:]*:}/x;/{\n.*PATTERN/!d'
. Todas las líneas de salida tendrán como prefijo los números de línea del archivo original seguidos de dos puntos, 1:sometext1{\n2:string1
etc. sed
filtrará solo lo que filtraría antes, excepto que cada línea de salida se abre con un número.