스트립트로 특정 문자 안의 내용만 뽑아 내는 방법이 있을까요...

지나가는새의 이미지

안녕하세요

굉장히 큰 텍스트 문서가 있는데 형식이 이렇습니다.

# title1
{
content1
content2
content3
...
}

# title2
{
content1
content2
content3
...
}

...

문제는 contents의 내용이 가변적이라 몇 줄이 될지 예측하기 어렵다는 거예요. 하지만 최대 라인은 정해져 있습니다.
여기서는 10줄이라고 한다면..

일단 grep으로 title을 잡아내면 내용은 가져오겠죠.

cat test.txt | grep -A10 title

이럴 경우에 결과는 이렇게 될 겁니다.
# title1
{
content1
content2
content3
...
}

# title2
{

저는 title1에서 시작해서 '}' 가 나올 때 까지의 내용만 가져오고 싶거든요..

제가 원하는 결과물은 이렇습니다.
# title1
{
content1
content2
content3
...
}

이게 방법이 있을까요?

mug896의 이미지

sed -rn '/title1/{ p; :XX n; p; /}/q; b XX }' bigfile

1. p -- print title line

2. :XX -- set a label named XX

3. n -- get the next line

4. p -- print the line

5. /}/q -- if the line matches /}/ then exit sed

6. b XX -- jump to XX label

지나가는새의 이미지

감사합니다! push/pop과 같은 기능이 있었군요!
더 공부 해야겠습니다

Fever Pitch!

qiiiiiiiip의 이미지

$ cat test.txt| perl -ne "print if /title1/../}/"
익명 사용자의 이미지

sed -rn '/title1/, /}/ p' bigfile