Frawk: An efficient Awk-like programming language. (2021)(github.com)
github.com
Frawk: An efficient Awk-like programming language. (2021)
https://github.com/ezrosent/frawk
56 comments
The builtin CSV/TSV parsing seems the killer feature here, at least for me.
I've been using SQL on CSV and JSON lately as it's mostly easiest for me, but I can think back a few times where I've used an *awk for a specific need, AND had to deal with CSV parsing at the same time.
I've been using SQL on CSV and JSON lately as it's mostly easiest for me, but I can think back a few times where I've used an *awk for a specific need, AND had to deal with CSV parsing at the same time.
Both GNU awk and "one true awk" added --csv last year, so as the README note mentions you probably don't need frawk for this (any more).
If you need just csv/tsv parsing, you can also take a look at https://github.com/eBay/tsv-utils
interestingly, i had read somewhere earlier that those utilities were written in D.
confirmed it by looking at the site just now.
confirmed it by looking at the site just now.
Yes, and with heavy use of one of the biggest D strengths -- CTFE (compile time eval). Great lib!
I only found out recently that my favourite csv-munging tool, csvtool, is written in OCaml.
What's the common tool people use these days for manipulating json in an awk-like manner?
gron (https://github.com/tomnomnom/gron) to transform it and query and then invert the transformation?
Probably:
https://jqlang.github.io/jq/
I would say that lots of people use jq. But it’s not really awk-like.
You could probably use gron with awk pretty easily, since gron stands for “greppable json”.
But I also wonder how an awk with native json support would look like.
You could probably use gron with awk pretty easily, since gron stands for “greppable json”.
But I also wonder how an awk with native json support would look like.
Food for thought: have a look at this paper[0] about structural regular expressions. The author (Rob Pike) sketches in the last section an awk-support. I remember using such regexps a while ago to tweak indented JSON and JSON-like data (the indentation allowed to loop on hashes easily).
An awk with json support would for the most part need to be able to loop on hashes and arrays, and provide ways to travel in-depth. So far regular awk can travel through arrays (line-separator), and "in-depth" (e.g. nested "arrays") via regular loops & cie. Probably easier to think about it with a few concrete examples though.
[0]: http://doc.cat-v.org/bell_labs/structural_regexps/se.pdf
An awk with json support would for the most part need to be able to loop on hashes and arrays, and provide ways to travel in-depth. So far regular awk can travel through arrays (line-separator), and "in-depth" (e.g. nested "arrays") via regular loops & cie. Probably easier to think about it with a few concrete examples though.
[0]: http://doc.cat-v.org/bell_labs/structural_regexps/se.pdf
How do you use SQL on JSON?
You mean only for strictly tabular JSON, i.e. no nesting beyond rows and columns?
You mean only for strictly tabular JSON, i.e. no nesting beyond rows and columns?
Spark and Drill have options, but DuckDB makes it almost trivial: https://duckdb.org/docs/data/json/overview
Thanks, will check that out.
duckdb, as noted by someone else as well.
>frawk is a small programming language for writing short programs processing textual data
AWK can do far more than that. With netcat you can write an IRC/Gopher client in days. There are solitaries written in awk, even tetris and maybe, sokobans.
AWK can do far more than that. With netcat you can write an IRC/Gopher client in days. There are solitaries written in awk, even tetris and maybe, sokobans.
You underestimate it!
https://github.com/TheMozg/awk-raycaster
https://github.com/TheMozg/awk-raycaster
Edit: Actually, for correctness' sake: goawk started earlier (2018, frawk 2019). I didn't trawl through the history to see which was at a usable and/or CSV-supporting stage earlier. Both did support CSV before that became trendy though.