unroll.awk (423B)
1 2# This filter requires one command line option of form -vN=n 3# where n must be a decimal number. 4# 5# Repeat each input line containing $$ n times, replacing $$ with 0...n-1. 6# Replace each $# with n, and each $* with a single $. 7 8BEGIN { 9 n = N + 0 10} 11{ 12 if (/\$\$/) { rep = n } else { rep = 1 } 13 for (i = 0; i < rep; ++i) { 14 tmp = $0 15 gsub(/\$\$/, i, tmp) 16 gsub(/\$#/, n, tmp) 17 gsub(/\$\*/, "$", tmp) 18 print tmp 19 } 20}