Eu tenho este arquivo:
sometext1{
string1
}
sometext2{
string2
string3
}
sometext3{
string4
string5
string6
}
Desejo procurar neste arquivo uma sequência específica e imprimir tudo antes dessa sequência até a abertura {e tudo depois dessa sequência até o fechamento }. Eu tentei conseguir isso com o sed, mas se eu tentar imprimir tudo no intervalo, /{/,/string2/por exemplo, sed imprime isso:
sometext1{
string1
}
sometext2{
string2
sometext3{
string4
string5
string6
}
Se eu procurar a string "string2", preciso que a saída seja:
sometext2{
string2
string3
}
Obrigado.
grep -n '' <infile | sed .... Os sedcomandos precisarão ser modificados; especificamente os bits de /endereço /que procuram por ^âncoras top de linha. Então, se você estava usando a minha resposta você provavelmente poderia fazer: grep -n '' | sed 'H;/{$/h;/^[^:]*:}/x;/{\n.*PATTERN/!d'. Todas as linhas de saída serão prefixadas com os números de linha do arquivo original, seguidos por dois pontos 1:sometext1{\n2:string1e assim por diante. sedfiltrará apenas o que filtraria antes, exceto que cada linha de saída é aberta com um número.