File: patsplit.awk

package info (click to toggle)
gawk 1%3A4.2.1%2Bdfsg-1
  • links: PTS
  • area: main
  • in suites: buster
  • size: 20,880 kB
  • sloc: ansic: 50,919; awk: 12,043; yacc: 6,393; sh: 5,675; makefile: 2,856; sed: 128; csh: 6
file content (26 lines) | stat: -rw-r--r-- 712 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
BEGIN {
	FALSE = 0
	TRUE = 1

	fpat[1] = "([^,]*)|(\"[^\"]+\")"
	fpat[2] = fpat[1]
	fpat[3] = fpat[1]
	fpat[4] = "aa+"
	fpat[5] = fpat[4]

	data[1] = "Robbins,,Arnold,"
	data[2] = "Smith,,\"1234 A Pretty Place, NE\",Sometown,NY,12345-6789,USA"
	data[3] = "Robbins,Arnold,\"1234 A Pretty Place, NE\",Sometown,NY,12345-6789,USA"
	data[4] = "bbbaaacccdddaaaaaqqqq"
	data[5] = "bbbaaacccdddaaaaaqqqqa" # should get trailing qqqa

	for (j = 1; j in data; j++) {
		printf("Splitting: <%s>\n", data[j])
		n = patsplit(data[j], fields, fpat[j], seps)
		print "n =", n
		for (i = 1; i <= n; i++)
			printf("fields[%d] = <%s>\n", i, fields[i])
		for (i = 0; i in seps; i++)
			printf("seps[%s] = <%s>\n", i, seps[i])
	}
}