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 sed
comandos 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:string1
e assim por diante. sed
filtrará apenas o que filtraria antes, exceto que cada linha de saída é aberta com um número.