goawk
A POSIX-compliant AWK interpreter written in Go, with CSV support
File Explorer
Download Latest Version (.zip)- tests.yml
- FUNDING.yml
- cover.md
- cover.png
- csv.md
- ast.go
- specialvars.go
- specialvars_test.go
- walk.go
- compiler.go
- disassembler.go
- disassembler_test.go
- opcode_string.go
- opcodes.go
- cover.go
- cover_test.go
- filereader.go
- filereader_test.go
- resolve.go
- toposort.go
- toposort_test.go
- openfile.txt
- csvreader_test.go
- example_test.go
- functions.go
- fuzz_test.go
- fuzz_unexported_test.go
- interp.go
- interp_test.go
- io.go
- iostream.go
- iostream_test.go
- newexecute.go
- newexecute_test.go
- openfile_root_test.go
- value.go
- vm.go
- lexer.go
- lexer_test.go
- token.go
- parser.go
- parser_test.go
- main.go
- main.go
- count.py
- csvbench.sh
- write.py
- benchmark.sh
- benchmark_awks.py
- benchstat.sh
- fuzz_input.sh
- fuzz_source.sh
- make_binaries.sh
- a1.awk
- a1_a2_covermode_count.awk
- a1_annotation_data.txt
- a1_covermode_set.awk
- a2.awk
- a2_annotation_data.txt
- a2_covermode_count.awk
- a3.awk
- a3_annotation_data.txt
- a3_covermode_set.awk
- test_1file2runs_set.cov
- test_1file2runs_set_truncated.cov
- test_2file2runs_count.cov
- test_2file2runs_count_truncated.cov
- test_a2a1_count.cov
- test_a2a1_set.cov
- test_count.cov
- test_set.cov
- 1.csv
- 2.csv
- address5.csv
- fields.csv
- nz-schools.csv
- states.csv
- states.psv
- 10
- 10x
- addcomma.awk
- addcomma.in
- addcomma.ok
- anchgsub.awk
- anchgsub.in
- anchgsub.ok
- anchor.awk
- anchor.in
- anchor.ok
- argarray.awk
- argarray.in
- argarray.ok
- arrayind3.awk
- arrayind3.ok
- arrayparm.awk
- arrayparm.ok
- arrayprm2.awk
- arrayprm2.ok
- arrayprm3.awk
- arrayprm3.ok
- arrayref.awk
- arrayref.ok
- arrymem1.awk
- arrymem1.ok
- arryref2.awk
- arryref2.ok
- arryref3.awk
- arryref3.ok
- arryref4.awk
- arryref4.ok
- arryref5.awk
- arryref5.ok
- arynasty.awk
- arynasty.ok
- aryprm1.awk
- aryprm1.ok
- aryprm3.awk
- aryprm3.ok
- aryprm4.awk
- aryprm4.ok
- aryprm5.awk
- aryprm5.ok
- aryprm6.awk
- aryprm6.ok
- aryprm7.awk
- aryprm7.ok
- aryprm8.awk
- aryprm8.ok
- aryprm9.awk
- aryprm9.ok
- arysubnm.awk
- arysubnm.ok
- aryunasgn.awk
- aryunasgn.ok
- asgext.awk
- asgext.in
- asgext.ok
- assignnumfield.awk
- assignnumfield.in
- assignnumfield.ok
- back89.awk
- back89.ok
- backgsub.awk
- backgsub.in
- backgsub.ok
- badassign1.awk
- badassign1.ok
- badbuild.awk
- badbuild.in
- badbuild.ok
- callparam.awk
- callparam.ok
- childin.awk
- childin.in
- childin.ok
- clobber.awk
- clobber.ok
- closebad.awk
- closebad.ok
- compare.awk
- compare.in
- compare.ok
- compare2.awk
- compare2.ok
- concat1.awk
- concat1.in
- concat1.ok
- concat2.awk
- concat2.ok
- concat3.awk
- concat3.ok
- concat4.awk
- concat4.in
- concat4.ok
- concat5.awk
- concat5.ok
- convfmt.awk
- convfmt.ok
- datanonl.awk
- datanonl.in
- datanonl.ok
- defref.awk
- defref.ok
- delargv.awk
- delargv.ok
- delarpm2.awk
- delarpm2.ok
- delfunc.awk
- delfunc.ok
- dfastress.awk
- dfastress.ok
- dynlj.awk
- dynlj.ok
- eofsplit.awk
- eofsplit.ok
- exit2.awk
- exit2.ok
- exitval2.awk
- exitval2.ok
- fcall_exit.awk
- fcall_exit.ok
- fcall_exit2.awk
- fcall_exit2.in
- fcall_exit2.ok
- fldchg.awk
- fldchg.in
- fldchg.ok
- fldchgnf.awk
- fldchgnf.in
- fldchgnf.ok
- fldterm.awk
- fldterm.in
- fldterm.ok
- fnamedat.awk
- fnamedat.in
- fnamedat.ok
- fnarray.awk
- fnarray.ok
- fnarray2.awk
- fnarray2.in
- fnarray2.ok
- fnaryscl.awk
- fnaryscl.ok
- fnasgnm.awk
- fnasgnm.in
- fnasgnm.ok
- fnmisc.awk
- fnmisc.ok
- forref.awk
- forref.ok
- forsimp.awk
- forsimp.ok
- fsbs.awk
- fsbs.in
- fsbs.ok
- fsnul1.awk
- fsnul1.in
- fsnul1.ok
- fsrs.awk
- fsrs.in
- fsrs.ok
- fsspcoln.awk
- fsspcoln.in
- fsspcoln.ok
- fstabplus.awk
- fstabplus.in
- fstabplus.ok
- funlen.awk
- funlen.in
- funlen.ok
- funsemnl.awk
- funsemnl.ok
- funsmnam.awk
- funsmnam.ok
- funstack.awk
- funstack.in
- funstack.ok
- getline.awk
- getline.in
- getline.ok
- getline2.awk
- getline2.in
- getline2.ok
- getline3.awk
- getline3.ok
- getline4.awk
- getline4.in
- getline4.ok
- getline5.awk
- getline5.ok
- getlnbuf.awk
- getlnbuf.in
- getlnbuf.ok
- getnr2tb.awk
- getnr2tb.in
- getnr2tb.ok
- getnr2tm.awk
- getnr2tm.in
- getnr2tm.ok
- gsubasgn.awk
- gsubasgn.ok
- gsubtest.awk
- gsubtest.ok
- gsubtst2.awk
- gsubtst2.ok
- gsubtst3.awk
- gsubtst3.in
- gsubtst3.ok
- gsubtst4.awk
- gsubtst4.ok
- gsubtst5.awk
- gsubtst5.in
- gsubtst5.ok
- gsubtst6.awk
- gsubtst6.ok
- gsubtst7.awk
- gsubtst7.in
- gsubtst7.ok
- gsubtst8.awk
- gsubtst8.in
- gsubtst8.ok
- hex.awk
- hex.ok
- hex2.awk
- hex2.in
- hex2.ok
- hsprint.awk
- hsprint.ok
- inpref.awk
- inpref.in
- inpref.ok
- inputred.awk
- inputred.ok
- intest.awk
- intest.ok
- intprec.awk
- intprec.ok
- iobug1.awk
- iobug1.ok
- leaddig.awk
- leaddig.ok
- leadnl.awk
- leadnl.in
- leadnl.ok
- litoct.awk
- litoct.in
- litoct.ok
- longsub.awk
- longsub.in
- longsub.ok
- longwrds.awk
- longwrds.in
- longwrds.ok
- manglprm.awk
- manglprm.in
- manglprm.ok
- math.awk
- math.ok
- minusstr.awk
- minusstr.ok
- mmap8k.awk
- mmap8k.in
- mmap8k.ok
- nasty.awk
- nasty.ok
- nasty2.awk
- nasty2.ok
- negexp.awk
- negexp.ok
- negrange.awk
- negrange.ok
- nested.awk
- nested.in
- nested.ok
- nfldstr.awk
- nfldstr.in
- nfldstr.ok
- nfloop.awk
- nfloop.ok
- nfneg.awk
- nfneg.ok
- nfset.awk
- nfset.in
- nfset.ok
- nlfldsep.awk
- nlfldsep.in
- nlfldsep.ok
- nlinstr.awk
- nlinstr.in
- nlinstr.ok
- nlstrina.awk
- nlstrina.ok
- noeffect.awk
- noeffect.ok
- nofmtch.awk
- nofmtch.ok
- noloop1.awk
- noloop1.in
- noloop1.ok
- noloop2.awk
- noloop2.in
- noloop2.ok
- nonl.awk
- nonl.in
- nonl.ok
- noparms.awk
- noparms.ok
- nulinsrc.awk
- nulinsrc.ok
- nulrsend.awk
- nulrsend.in
- nulrsend.ok
- numindex.awk
- numindex.in
- numindex.ok
- numrange.awk
- numrange.ok
- numstr1.awk
- numstr1.ok
- numsubstr.awk
- numsubstr.in
- numsubstr.ok
- octsub.awk
- octsub.ok
- ofmt.awk
- ofmt.in
- ofmt.ok
- ofmta.awk
- ofmta.ok
- ofmtbig.awk
- ofmtbig.in
- ofmtbig.ok
- ofmtfidl.awk
- ofmtfidl.in
- ofmtfidl.ok
- ofmts.awk
- ofmts.in
- ofmts.ok
- ofmtstrnum.awk
- ofmtstrnum.ok
- ofs1.awk
- ofs1.in
- ofs1.ok
- onlynl.awk
- onlynl.in
- onlynl.ok
- opasnidx.awk
- opasnidx.ok
- opasnslf.awk
- opasnslf.ok
- paramasfunc1.awk
- paramasfunc1.ok
- paramasfunc2.awk
- paramasfunc2.ok
- paramdup.awk
- paramdup.ok
- paramtyp.awk
- paramtyp.ok
- paramuninitglobal.awk
- paramuninitglobal.ok
- parse1.awk
- parse1.in
- parse1.ok
- parsefld.awk
- parsefld.in
- parsefld.ok
- parseme.awk
- parseme.ok
- pcntplus.awk
- pcntplus.ok
- posix2008sub.awk
- posix2008sub.ok
- prdupval.awk
- prdupval.in
- prdupval.ok
- prec.awk
- prec.ok
- printf1.awk
- printf1.ok
- printfchar.awk
- printfchar.ok
- prmarscl.awk
- prmarscl.ok
- prmreuse.awk
- prmreuse.ok
- prt1eval.awk
- prt1eval.ok
- prtoeval.awk
- prtoeval.ok
- rand.awk
- rand.ok
- range1.awk
- range1.in
- range1.ok
- readbuf.awk
- readbuf.ok
- rebuild.awk
- rebuild.in
- rebuild.ok
- redfilnm.awk
- redfilnm.in
- redfilnm.ok
- regeq.awk
- regeq.in
- regeq.ok
- regexpbrack.awk
- regexpbrack.in
- regexpbrack.ok
- regexpbrack2.awk
- regexpbrack2.in
- regexpbrack2.ok
- regexprange.awk
- regexprange.ok
- regrange.awk
- regrange.ok
- reparse.awk
- reparse.in
- reparse.ok
- resplit.awk
- resplit.in
- resplit.ok
- rri1.awk
- rri1.in
- rri1.ok
- rs.awk
- rs.in
- rs.ok
- rscompat.awk
- rscompat.in
- rscompat.ok
- rsgetline.awk
- rsgetline.in
- rsgetline.ok
- rsnul1nl.awk
- rsnul1nl.in
- rsnul1nl.ok
- rsnullre.awk
- rsnullre.in
- rsnullre.ok
- rsnulw.awk
- rsnulw.in
- rsnulw.ok
- rsstart1.awk
- rsstart1.in
- rsstart1.ok
- rsstart2.awk
- rsstart2.in
- rsstart2.ok
- rstest1.awk
- rstest1.ok
- rstest2.awk
- rstest2.ok
- rstest3.awk
- rstest3.ok
- rstest4.awk
- rstest4.ok
- rstest5.awk
- rstest5.ok
- rstest6.awk
- rstest6.in
- rstest6.ok
- rswhite.awk
- rswhite.in
- rswhite.ok
- scalar.awk
- scalar.ok
- sclforin.awk
- sclforin.ok
- sclifin.awk
- sclifin.ok
- setrec0.awk
- setrec0.in
- setrec0.ok
- setrec1.awk
- setrec1.ok
- sigpipe1.awk
- sigpipe1.ok
- spacere.awk
- spacere.ok
- splitargv.awk
- splitargv.in
- splitargv.ok
- splitarr.awk
- splitarr.ok
- splitdef.awk
- splitdef.ok
- splitvar.awk
- splitvar.in
- splitvar.ok
- splitwht.awk
- splitwht.ok
- status-close.awk
- status-close.ok
- strcat1.awk
- strcat1.ok
- strnum1.awk
- strnum1.ok
- strnum2.awk
- strnum2.ok
- strtod.awk
- strtod.in
- strtod.ok
- subamp.awk
- subamp.in
- subamp.ok
- subback.awk
- subback.in
- subback.ok
- subi18n.awk
- subi18n.ok
- subsepnm.awk
- subsepnm.ok
- subslash.awk
- subslash.ok
- substr.awk
- substr.ok
- swaplns.awk
- swaplns.in
- swaplns.ok
- synerr1.awk
- synerr1.ok
- synerr2.awk
- synerr2.ok
- tailrecurse.awk
- tailrecurse.ok
- tradanch.awk
- tradanch.in
- tradanch.ok
- tweakfld.awk
- tweakfld.in
- tweakfld.ok
- uninit2.awk
- uninit2.ok
- uninit3.awk
- uninit3.ok
- uninit4.awk
- uninit4.ok
- uninit5.awk
- uninit5.ok
- uninitialized.awk
- uninitialized.ok
- unterm.awk
- unterm.ok
- uparrfs.awk
- uparrfs.in
- uparrfs.ok
- uplus.awk
- uplus.ok
- wideidx.awk
- wideidx.in
- wideidx.ok
- wideidx2.awk
- wideidx2.ok
- widesub.awk
- widesub.ok
- widesub2.awk
- widesub2.ok
- widesub3.awk
- widesub3.in
- widesub3.ok
- widesub4.awk
- widesub4.ok
- wjposer1.awk
- wjposer1.in
- wjposer1.ok
- zero2.awk
- zero2.ok
- zeroe0.awk
- zeroe0.ok
- zeroflag.awk
- zeroflag.ok
- gron.awk
- p.1
- p.10
- p.11
- p.12
- p.13
- p.14
- p.15
- p.16
- p.17
- p.18
- p.19
- p.2
- p.20
- p.21
- p.21a
- p.22
- p.23
- p.24
- p.25
- p.26
- p.26a
- p.27
- p.28
- p.29
- p.3
- p.30
- p.31
- p.32
- p.33
- p.34
- p.35
- p.36
- p.37
- p.38
- p.39
- p.4
- p.40
- p.41
- p.42
- p.43
- p.44
- p.45
- p.46
- p.47
- p.48
- p.48a
- p.48b
- p.49
- p.5
- p.50
- p.51
- p.52
- p.5a
- p.6
- p.7
- p.8
- p.9
- p.table
- t.0
- t.0a
- t.1
- t.1.x
- t.2
- t.2.x
- t.3
- t.3.x
- t.4
- t.4.x
- t.5.x
- t.6
- t.6.x
- t.6a
- t.6b
- t.8.x
- t.8.y
- t.a
- t.addops
- t.aeiou
- t.aeiouy
- t.arith
- t.array
- t.array1
- t.array2
- t.assert
- t.avg
- t.b.x
- t.be
- t.beginexit
- t.beginnext
- t.break
- t.break1
- t.break2
- t.break3
- t.bug1
- t.builtins
- t.cat
- t.cat1
- t.cat2
- t.cmp
- t.coerce
- t.coerce2
- t.comment
- t.comment1
- t.concat
- t.cond
- t.contin
- t.count
- t.crlf
- t.cum
- t.d.x
- t.delete1
- t.delete2
- t.delete3
- t.do
- t.e
- t.else
- t.exit
- t.exit1
- t.f
- t.f.x
- t.f0
- t.f1
- t.f2
- t.f3
- t.f4
- t.for
- t.for1
- t.for2
- t.for3
- t.format4
- t.fun
- t.fun0
- t.fun1
- t.fun2
- t.fun3
- t.fun4
- t.fun5
- t.getval
- t.gsub
- t.gsub1
- t.gsub3
- t.gsub4
- t.i.x
- t.if
- t.in
- t.in1
- t.in2
- t.in3
- t.incr
- t.incr2
- t.incr3
- t.index
- t.intest
- t.intest2
- t.j.x
- t.longstr
- t.makef
- t.match
- t.match1
- t.max
- t.mod
- t.monotone
- t.nameval
- t.next
- t.NF
- t.not
- t.null0
- t.ofmt
- t.ofs
- t.ors
- t.pat
- t.pipe
- t.pp
- t.pp1
- t.pp2
- t.printf
- t.printf2
- t.quote
- t.randk
- t.re1
- t.re1a
- t.re2
- t.re3
- t.re4
- t.re5
- t.re7
- t.rec
- t.reFS
- t.reg
- t.roff
- t.sep
- t.seqno
- t.set0
- t.set0a
- t.set0b
- t.set1
- t.set2
- t.set3
- t.split2
- t.split2a
- t.split3
- t.split4
- t.split8
- t.split9
- t.split9a
- t.stately
- t.strcmp
- t.strcmp1
- t.strnum
- t.sub1
- t.sub2
- t.sub3
- t.substr
- t.substr1
- t.time
- t.vf
- t.vf1
- t.vf2
- t.vf3
- t.x
- bad.awk
- good.awk
- a.awk
- b.awk
- one.txt
- two.txt
- awc.awk
- foo.td
- g.1
- g.2
- g.3
- g.4
- g.5
- g.6
- p.1
- p.10
- p.11
- p.12
- p.13
- p.14
- p.15
- p.16
- p.17
- p.18
- p.19
- p.2
- p.20
- p.21
- p.21a
- p.22
- p.23
- p.24
- p.25
- p.26
- p.26a
- p.27
- p.28
- p.29
- p.3
- p.30
- p.31
- p.32
- p.33
- p.34
- p.35
- p.36
- p.37
- p.38
- p.39
- p.4
- p.40
- p.41
- p.42
- p.43
- p.44
- p.45
- p.46
- p.47
- p.48
- p.48a
- p.48b
- p.49
- p.5
- p.50
- p.51
- p.52
- p.5a
- p.6
- p.7
- p.8
- p.9
- p.table
- README
- t.0
- t.0a
- t.1
- t.1.x
- t.2
- t.2.x
- t.3
- t.3.x
- t.4
- t.4.x
- t.5.x
- t.6
- t.6.x
- t.6a
- t.6b
- t.8.x
- t.8.y
- t.a
- t.addops
- t.aeiou
- t.aeiouy
- t.arith
- t.array
- t.array1
- t.array2
- t.assert
- t.avg
- t.b.x
- t.be
- t.beginexit
- t.beginnext
- t.break
- t.break1
- t.break2
- t.break3
- t.bug1
- t.builtins
- t.cat
- t.cat1
- t.cat2
- t.cmp
- t.coerce
- t.coerce2
- t.comment
- t.comment1
- t.concat
- t.cond
- t.contin
- t.count
- t.crlf
- t.cum
- t.d.x
- t.delete1
- t.delete2
- t.delete3
- t.do
- t.e
- t.else
- t.exit
- t.exit1
- t.f
- t.f.x
- t.f0
- t.f1
- t.f2
- t.f3
- t.f4
- t.for
- t.for1
- t.for2
- t.for3
- t.format4
- t.fun
- t.fun0
- t.fun1
- t.fun2
- t.fun3
- t.fun4
- t.fun5
- t.getval
- t.gsub
- t.gsub1
- t.gsub3
- t.gsub4
- t.i.x
- t.if
- t.in
- t.in1
- t.in2
- t.in3
- t.incr
- t.incr2
- t.incr3
- t.index
- t.intest
- t.intest2
- t.j.x
- t.longstr
- t.makef
- t.match
- t.match1
- t.max
- t.mod
- t.monotone
- t.nameval
- t.next
- t.NF
- t.not
- t.null0
- t.ofmt
- t.ofs
- t.ors
- t.pat
- t.pipe
- t.pp
- t.pp1
- t.pp2
- t.printf
- t.printf2
- t.quote
- t.randk
- t.re1
- t.re1a
- t.re2
- t.re3
- t.re4
- t.re5
- t.re7
- t.rec
- t.reFS
- t.reg
- t.roff
- t.sep
- t.seqno
- t.set0
- t.set0a
- t.set0b
- t.set1
- t.set2
- t.set3
- t.split2
- t.split2a
- t.split3
- t.split4
- t.split8
- t.split9
- t.split9a
- t.stately
- t.strcmp
- t.strcmp1
- t.strnum
- t.sub1
- t.sub2
- t.sub3
- t.substr
- t.substr1
- t.time
- t.vf
- t.vf1
- t.vf2
- t.vf3
- t.x
- test.countries
- test.data
- tt.01_print
- tt.02_print_NR_NF
- tt.02a_print_length
- tt.03_sum_length
- tt.03a_sum_field
- tt.04_printf_fields
- tt.05_concat_fields
- tt.06_count_lengths
- tt.07_even_fields
- tt.08_even_lengths
- tt.08z_regex_simple
- tt.09_regex_starts_with
- tt.10_regex_ends_with
- tt.10a_regex_ends_with_var
- tt.11_substr
- tt.12_update_fields
- tt.13_array_ops
- tt.13a_array_printf
- tt.14_function_call
- tt.15_format_lines
- tt.16_count_words
- tt.big_complex_program
- tt.x1_mandelbrot
- tt.x2_sum_loop
- .gitignore
- go.mod
- goawk.go
- goawk_test.go
- LICENSE.txt
- README.md
// repository documentation
Was this content helpful?
(0 ratings)
