![중괄호 안의 내용을 찾는 방법](https://linux55.com/image/192984/%EC%A4%91%EA%B4%84%ED%98%B8%20%EC%95%88%EC%9D%98%20%EB%82%B4%EC%9A%A9%EC%9D%84%20%EC%B0%BE%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
파일이 있습니다:
[{
abc
def
123
}]
[{
abc
456
789
}]
var="789" find (grep sed ...) $var가 결과 중괄호를 반환하고 싶습니다.
{
abc
456
789
}
or
[{
abc
456
789
}]
or
abc
456
789
시도했지만 grep '[.*${var}.*]' file
결과가 반환되었습니다.
{
abc
def
123
}
{
abc
456
789
}
답변1
블록이 빈 줄로 구분되어 있으면 "단락" 모드에서 파일을 읽을 수 있습니다.
awk -v RS="" '/789/' file
여기에서와 같이 블록이 "빈" 줄(구분 라인의 탭 또는 공백)로 구분되는 경우 레코드 구분 기호는 좀 더 복잡해집니다.
awk -v RS='\n([[:blank:]]+\n)+' '/789/' file
패턴을 변수로 전달하려면 다음을 수행하십시오.
awk -v RS="" -v patt="$var" '$0 ~ patt' file
답변2
패턴을 변수로 전달하려면 다음을 수행하십시오.
awk -v RS="" -v patt="$var" '$0 ~ patt' file
결과를 원래 값으로 반환합니다.
[{
abc
def
123
}]
[{
abc
456
789
}]