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