我有一个文件:
[{
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
}]