[HN Gopher] Frawk: An efficient Awk-like programming language. (...
       ___________________________________________________________________
        
       Frawk: An efficient Awk-like programming language. (2021)
        
       Author : fanf2
       Score  : 50 points
       Date   : 2024-04-21 10:42 UTC (1 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | michaelcampbell wrote:
       | 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.
        
         | arp242 wrote:
         | 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).
        
         | tooltower wrote:
         | What's the common tool people use these days for manipulating
         | json in an awk-like manner?
        
           | hermitcrab wrote:
           | Probably: https://jqlang.github.io/jq/
        
             | rmetzler wrote:
             | 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.
        
               | mbivert wrote:
               | 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
        
           | sceadu wrote:
           | gron (https://github.com/tomnomnom/gron) to transform it and
           | query and then invert the transformation?
        
         | tastyminerals2 wrote:
         | If you need just csv/tsv parsing, you can also take a look at
         | https://github.com/eBay/tsv-utils
        
           | fuzztester wrote:
           | interestingly, i had read somewhere earlier that those
           | utilities were written in D.
           | 
           | confirmed it by looking at the site just now.
        
             | gpvos wrote:
             | I only found out recently that my favourite csv-munging
             | tool, csvtool, is written in OCaml.
        
             | tastyminerals2 wrote:
             | Yes, and with heavy use of one of the biggest D strengths
             | -- CTFE (compile time eval). Great lib!
        
         | fuzztester wrote:
         | How do you use SQL on JSON?
         | 
         | You mean only for strictly tabular JSON, i.e. no nesting beyond
         | rows and columns?
        
       | gpvos wrote:
       | frawk was the first awk to add proper CSV support, but the
       | better-known awks have added it now as well, so its utility has
       | become more limited.
       | 
       | 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.
        
       ___________________________________________________________________
       (page generated 2024-04-22 23:01 UTC)