Tente:
awk '{print; for (i=1;i<=31;i++) {x=$0; gsub(/sel0/, "sel" i, x); print x;}}' RS="" file
Por exemplo, e limitado a 3 repetições:
$ awk '{print; for (i=1;i<=3;i++) {x=$0; gsub(/sel0/, "sel" i, x); print x;}}' RS="" file
cr_v8_sel0 : cross cp_v8_en, cp_sel0 {
ignore_bins ig_v8_sel0 = binsof(cp_v8_en) && binsof(cp_sel0) intersect {[0:3],[5:$]};
}
cr_v8_sel1 : cross cp_v8_en, cp_sel1 {
ignore_bins ig_v8_sel1 = binsof(cp_v8_en) && binsof(cp_sel1) intersect {[0:3],[5:$]};
}
cr_v8_sel2 : cross cp_v8_en, cp_sel2 {
ignore_bins ig_v8_sel2 = binsof(cp_v8_en) && binsof(cp_sel2) intersect {[0:3],[5:$]};
}
cr_v8_sel3 : cross cp_v8_en, cp_sel3 {
ignore_bins ig_v8_sel3 = binsof(cp_v8_en) && binsof(cp_sel3) intersect {[0:3],[5:$]};
}
Como funciona
-
print
Isto imprime a versão original com
sel0
. -
for (i=1;i<=31;i++) {x=$0; gsub(/sel0/, "sel" i, x); print x;
Isso faz um loop de
i
de 1 a 31, faz as substituições e imprime o resultado. -
RS=""
Isto diz ao awk para ler um parágrafo inteiro de cada vez. Como sua fonte não tem linhas em branco, isso tem o efeito de ler suas fontes inteiras de uma só vez.
Versão multilinha
awk '
{
print
for (i=1;i<=31;i++)
{
x=$0
gsub(/sel0/, "sel" i, x)
print x;
}
}
' RS="" file