AWK - 在继续下一场比赛之前处理比赛

问题描述 投票:0回答:1

我有一个包含多个段落的文件,这些段落使用括号作为分隔符,如下所示

{
a = 1
b = 2
c = 3
}
{
d = 4
e = 5
f = 6
}

我想循环每个段落并将其分配给变量 $foo 同时保留换行符,因此 echo $foo 将导致该段落以多行格式输出。处理完 $foo 的输出后,例如

echo $foo | grep bar
,程序应该转到下一段并覆盖 $foo

我一直在使用 awk,因为它似乎是这种情况下最好的工具,但我不知道如何执行某种 while 循环,以便我可以单独处理每个段落。

loops shell awk
1个回答
0
投票

我会做什么:

awk -v p=1 'BEGIN{RS="}\n{"}NR==p{print $0"}"}' file
{
a = 1
b = 2
c = 3
}
© www.soinside.com 2019 - 2024. All rights reserved.