파일이 있습니다:
[{
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
}]