frawk is a small programming language for writing short programs processing textual data. To a first approximation, it is an implementation of the AWK language; many common Awk programs produce equivalent output when passed to frawk. You might be interested in frawk if you want your scripts to handle escaped CSV/TSV like standard Awk fields, or if you want your scripts to execute faster.
The info subdirectory has more in-depth information on frawk:
frawk is dual-licensed under MIT or Apache 2.0.
In addition to installing Rust, you will need an installation of LLVM 10.0 on your machine:
pacman -Sy llvm llvm-libs
and a C compiler (e.g. clang
) are sufficient as of September 2020.brew install llvm@10
or similar seem to work on Mac OS.Depending on where your package manager puts these libraries, you may need to
point LLVM_SYS_100_PREFIX
at the llvm library installation (e.g.
/usr/lib/llvm-10
). While the LLVM backend is recommended, it is possible to
build frawk only with support for its bytecode interpreter: to do so, build
without the llvm_backend
feature.
frawk currently requires a nightly
compiler. Using rustup default nightly
,
or some other method to run a nightly compiler release is currently required to
build frawk.
With those prerequesites, cloning this repository and a cargo build --release
or cargo [+nightly] install --path <frawk repo path>
will produce a binary that you can
add to your PATH
if you so choose:
```
$ cd
$ cargo +nightly install --path .
$ cargo +nightly install --path . --no-default-features --features usejemalloc,allowavx2 ```
frawk is now on crates.io, so running
cargo install frawk
with the desired features should also work.
While there are no deliberate unix-isms in frawk, I have not tested it on Windows.
frawk has bugs, and many rough edges. If you notice a bug in frawk, filing an issue with an explanation of how to reproduce the error would be very helpful. There are no guarantees on response time or latency for a fix. No one works on frawk full-time. The same policy holds for feature requests.