<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://zawk.microservices.club/blog</id>
    <title>zawk Blog</title>
    <updated>2026-10-28T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://zawk.microservices.club/blog"/>
    <subtitle>zawk Blog</subtitle>
    <icon>https://zawk.microservices.club/img/logo.svg</icon>
    <entry>
        <title type="html"><![CDATA[zawk: AWK for the Age of CSV, Parquet, Databases and AI]]></title>
        <id>https://zawk.microservices.club/blog/introducing-zawk</id>
        <link href="https://zawk.microservices.club/blog/introducing-zawk"/>
        <updated>2026-10-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[AWK is almost fifty years old, and it is still one of the best tools ever made for "scan records, filter,]]></summary>
        <content type="html"><![CDATA[<p>AWK is almost fifty years old, and it is still one of the best tools ever made for "scan records, filter,
transform, aggregate, print". But the data we scan has changed: CSV with quoted commas, JSON Lines, Parquet
files on S3, tables in PostgreSQL, events on NATS. And the person writing the one-liner is increasingly an AI
agent.</p>
<p><strong>zawk</strong> is a modern AWK built for that world: <code>zawk = AWK + stdlib + Rust</code>. Version 0.6.6 is out today, and
this post is a tour of what makes it different.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="it-is-still-awk">It is still AWK<a href="https://zawk.microservices.club/blog/introducing-zawk#it-is-still-awk" class="hash-link" aria-label="Direct link to It is still AWK" title="Direct link to It is still AWK" translate="no">​</a></h2>
<p>Everything you know keeps working:</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">zawk -F: </span><span class="token string" style="color:#e3116c">'$3 &gt;= 1000 { print $1 }'</span><span class="token plain"> /etc/passwd</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token string" style="color:#e3116c">'{ c[$9]++ } END { for (s in c) print s, c[s] }'</span><span class="token plain"> access.log</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token string" style="color:#e3116c">'!seen[$0]++'</span><span class="token plain"> data.txt</span><br></div></code></pre></div></div>
<p>zawk is gawk mostly compatible and the successor of Eli Rosenthal's <a href="https://github.com/ezrosent/frawk" target="_blank" rel="noopener noreferrer" class="">frawk</a>.
It infers the types of your variables, compiles the program to machine code with Cranelift, and uses SIMD to
parse CSV and validate UTF-8. On large files it is usually <strong>2-8x faster than gawk</strong>, and simple scripts can run
in parallel with <code>-p r</code>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="real-structured-data">Real structured data<a href="https://zawk.microservices.club/blog/introducing-zawk#real-structured-data" class="hash-link" aria-label="Direct link to Real structured data" title="Direct link to Real structured data" translate="no">​</a></h2>
<p>Classic AWK splits on a regex, which silently corrupts a CSV field like <code>"Doe, John"</code>. zawk has real parsers,
and columns have names:</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token parameter variable" style="color:#36acaa">-i</span><span class="token plain"> csv </span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'$FI["age"] &gt; 40 { print $FI["name"] }'</span><span class="token plain"> users.csv</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token parameter variable" style="color:#36acaa">-i</span><span class="token plain"> jsonl </span><span class="token string" style="color:#e3116c">'$FI["level"] == "error" { print $FI["ts"], $FI["msg"] }'</span><span class="token plain"> app.jsonl</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token parameter variable" style="color:#36acaa">-i</span><span class="token plain"> parquet </span><span class="token parameter variable" style="color:#36acaa">-o</span><span class="token plain"> csv </span><span class="token string" style="color:#e3116c">'{ print $1, $2 }'</span><span class="token plain"> people.parquet </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> people.csv</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{ print $FI["name"] }'</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'book.xlsx#Sheet2'</span><br></div></code></pre></div></div>
<p>Input can come from stdin, <code>https://</code>, <code>s3://</code>, compressed files, a <strong>database table</strong>, or a <strong>NATS subject</strong>:</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token string" style="color:#e3116c">'$FI["age"] &gt; 20 { print $FI["name"] }'</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'mysql://root:123456@127.0.0.1:3306/test#people'</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token parameter variable" style="color:#36acaa">-i</span><span class="token plain"> json </span><span class="token string" style="color:#e3116c">'MSG_SUBJECT ~ /orders/ { print $FI["id"] }'</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'nats://localhost:4222/events.&gt;'</span><br></div></code></pre></div></div>
<p>And output can be CSV, TSV, JSON Lines, Parquet, an aligned terminal table, or a Markdown table ready to paste
into a pull request:</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">$ zawk </span><span class="token parameter variable" style="color:#36acaa">-i</span><span class="token plain"> csv </span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">-o</span><span class="token plain"> md </span><span class="token string" style="color:#e3116c">'NR==1 { print "name", "age" } { print $FI["name"], $FI["age"] }'</span><span class="token plain"> demo.csv</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> name </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> age </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> --- </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> --- </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> Jackie </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">48</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> Love </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">49</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-standard-library">A standard library<a href="https://zawk.microservices.club/blog/introducing-zawk#a-standard-library" class="hash-link" aria-label="Direct link to A standard library" title="Direct link to A standard library" translate="no">​</a></h2>
<p>AWK has about twenty builtin functions. zawk has about <strong>190</strong>, grouped like a real standard library:</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token string" style="color:#e3116c">'{ u = url($1); print u["host"], pairs(u["query"], "&amp;")["id"] }'</span><span class="token plain"> urls.txt</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token string" style="color:#e3116c">'{ print uuid("v7"), digest("sha256", $0), encode("base64", $0) }'</span><span class="token plain"> data.txt</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token parameter variable" style="color:#36acaa">-i</span><span class="token plain"> jsonl </span><span class="token string" style="color:#e3116c">'{ print json_value($FI["payload"], "$.user.email") }'</span><span class="token plain"> events.jsonl</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token string" style="color:#e3116c">'{ lat[NR] = $NF } END { print _median(lat), _quantile(lat, 0.99) }'</span><span class="token plain"> api.log</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token string" style="color:#e3116c">'{ r = http_get("https://api.example.com/users/" $1); print json_value(r["text"], "$.name") }'</span><span class="token plain"> ids.txt</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token parameter variable" style="color:#36acaa">-i</span><span class="token plain"> csv </span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'{ p[1] = $1; p[2] = $2; sqlite_execute("app.db", "insert into users values(?, ?)", p) }'</span><span class="token plain"> users.csv</span><br></div></code></pre></div></div>
<p>Text, case conversion, masking, fuzzy matching, JSON/XML/HTML, dates, durations, crypto and JWT, IDs,
statistics, HTTP, email, S3, SQLite/MySQL/PostgreSQL, Redis/NATS KV, NATS/MQTT publishing... and functions
that fail never crash a long run: they warn, set <code>ERRNO</code>, and return an empty value.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="modern-syntax-without-breaking-awk">Modern syntax, without breaking AWK<a href="https://zawk.microservices.club/blog/introducing-zawk#modern-syntax-without-breaking-awk" class="hash-link" aria-label="Direct link to Modern syntax, without breaking AWK" title="Direct link to Modern syntax, without breaking AWK" translate="no">​</a></h2>
<p>zawk adds a handful of constructs that make scripts shorter and safer:</p>
<div class="language-awk codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-awk codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    local ms </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">$FI</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"latency_ms"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain">                       </span><span class="token comment" style="color:#999988;font-style:italic"># local variables, default values</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    level </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> match </span><span class="token variable" style="color:#36acaa">$FI</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"status"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">                           </span><span class="token comment" style="color:#999988;font-style:italic"># match expressions</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token operator" style="color:#393A34">/</span><span class="token operator" style="color:#393A34">^</span><span class="token number" style="color:#36acaa">2</span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ok"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token regex" style="color:#36acaa">/^4/</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"client"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token regex" style="color:#36acaa">/^5/</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"server"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> _ </span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"unknown"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    body </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> try </span><span class="token function" style="color:#d73a49">read_all</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">$FI</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"url"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">else</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain">                 </span><span class="token comment" style="color:#999988;font-style:italic"># explicit error handling</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">$FI</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!</span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> seen</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> seen</span><span class="token punctuation" style="color:#393A34">[</span><span class="token variable" style="color:#36acaa">$FI</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">             </span><span class="token comment" style="color:#999988;font-style:italic"># !in</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">assert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">NF </span><span class="token operator" style="color:#393A34">&gt;=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> f</span><span class="token string" style="color:#e3116c">"line {NR}: expect 3 fields"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain">          </span><span class="token comment" style="color:#999988;font-style:italic"># fail fast</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">END</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">k</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> v </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> errors</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">print</span><span class="token plain"> f</span><span class="token string" style="color:#e3116c">"{k:&lt;10} {v:&gt;8,}"</span><span class="token plain">           </span><span class="token comment" style="color:#999988;font-style:italic"># key-value loops, f-strings with format specs</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">i </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain">..</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">3</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">print</span><span class="token plain"> $</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">i</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain">                            </span><span class="token comment" style="color:#999988;font-style:italic"># ranges, negative field indexes</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>Raw strings (<code>r"\d+\.\d+"</code>) end the double-backslash dance in dynamic regexes, and gawk's <code>switch</code> is there
too.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="built-for-ai-agents">Built for AI agents<a href="https://zawk.microservices.club/blog/introducing-zawk#built-for-ai-agents" class="hash-link" aria-label="Direct link to Built for AI agents" title="Direct link to Built for AI agents" translate="no">​</a></h2>
<p>The one-liner author of 2026 is often an LLM. zawk is designed to be easy for agents to use correctly:</p>
<ul>
<li class=""><code>zawk inspect data.csv</code> shows the schema, sample rows and a column summary.</li>
<li class=""><code>zawk functions --json</code> lists every function with its signature and an example.</li>
<li class=""><code>zawk lint</code> type checks a program and reports JSON diagnostics with codes, lines and carets.</li>
<li class=""><code>zawk llm data.csv 'question'</code> builds the whole prompt: schema, sample, language notes and your question.</li>
</ul>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token parameter variable" style="color:#36acaa">-i</span><span class="token plain"> csv </span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"</span><span class="token string variable" style="color:#36acaa">$(</span><span class="token string variable" style="color:#36acaa">zawk llm </span><span class="token string variable parameter variable" style="color:#36acaa">-i</span><span class="token string variable" style="color:#36acaa"> csv </span><span class="token string variable parameter variable" style="color:#36acaa">-H</span><span class="token string variable" style="color:#36acaa"> demo.csv </span><span class="token string variable string" style="color:#e3116c">'how many adults?'</span><span class="token string variable" style="color:#36acaa"> </span><span class="token string variable operator" style="color:#393A34">|</span><span class="token string variable" style="color:#36acaa"> llm </span><span class="token string variable parameter variable" style="color:#36acaa">-x</span><span class="token string variable" style="color:#36acaa">)</span><span class="token string" style="color:#e3116c">"</span><span class="token plain"> demo.csv</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">zawk llm </span><span class="token parameter variable" style="color:#36acaa">-i</span><span class="token plain"> csv </span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> demo.csv </span><span class="token string" style="color:#e3116c">'what is the average age of adults?'</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> claude </span><span class="token parameter variable" style="color:#36acaa">-p</span><span class="token plain"> --dangerously-skip-permissions</span><br></div></code></pre></div></div>
<p>A <a href="https://github.com/linux-china/zawk/blob/master/skills/zawk/SKILL.md" target="_blank" rel="noopener noreferrer" class="">Claude Code skill</a> ships with the
repository. And in the other direction, the <code>jev</code> functions let a zawk program ask typed questions of an LLM,
per record:</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">zawk </span><span class="token string" style="color:#e3116c">'{ print jev_choice($0, "which team should handle this?", "billing,technical,security,sales"), $0 }'</span><span class="token plain"> tickets.txt</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="try-it">Try it<a href="https://zawk.microservices.club/blog/introducing-zawk#try-it" class="hash-link" aria-label="Direct link to Try it" title="Direct link to Try it" translate="no">​</a></h2>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">brew </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> linux-china/tap/zawk     </span><span class="token comment" style="color:#999988;font-style:italic"># macOS</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">cargo</span><span class="token plain"> binstall zawk                                   </span><span class="token comment" style="color:#999988;font-style:italic"># anywhere with Rust tooling</span><br></div></code></pre></div></div>
<p>Then head to the <a class="" href="https://zawk.microservices.club/docs/intro">Getting Started</a> guide, the <a class="" href="https://zawk.microservices.club/docs/syntax/overview">syntax overview</a>, the
<a class="" href="https://zawk.microservices.club/docs/stdlib/overview">standard library</a> and the <a class="" href="https://zawk.microservices.club/docs/tutorials/database">tutorials</a>. zawk has rough edges
and no one works on it full-time: <a href="https://github.com/linux-china/zawk" target="_blank" rel="noopener noreferrer" class="">issues and pull requests</a> are very
welcome.</p>
<p>Happy text gardening!</p>]]></content>
        <author>
            <name>linux_china</name>
            <uri>https://github.com/linux-china</uri>
        </author>
        <category label="zawk" term="zawk"/>
        <category label="AWK" term="AWK"/>
        <category label="Release" term="Release"/>
        <category label="AI" term="AI"/>
    </entry>
</feed>