ファイルがあります:
[{
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
}]