https://github.com/ezrosent/frawk Skip to content Toggle navigation Sign in * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} ezrosent / frawk Public * Notifications * Fork 30 * Star 1.2k * an efficient awk-like language License Apache-2.0, MIT licenses found Licenses found Apache-2.0 LICENSE-APACHE MIT LICENSE-MIT 1.2k stars 30 forks Branches Tags Activity Star Notifications * Code * Issues 27 * Pull requests 0 * Actions * Projects 0 * Security * Insights Additional navigation options * Code * Issues * Pull requests * Actions * Projects * Security * Insights ezrosent/frawk This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master BranchesTags Go to file Code Folders and files Name Name Last commit message Last commit date Latest commit History 682 Commits .cargo .cargo info info src src tests tests .gitignore .gitignore Cargo.lock Cargo.lock Cargo.toml Cargo.toml LICENSE-APACHE LICENSE-APACHE LICENSE-MIT LICENSE-MIT README.md README.md build.rs build.rs View all files Repository files navigation * README * Apache-2.0 license * MIT license frawk Note (2024, ezrosent@) While the policy on bugs and feature requests remains unchanged I've had much less time over the last 1-2 years to devote to bug fixes and feature requests for frawk. Other awks are more actively maintained, and CSV support is now a much more common feature in awk compared to when this project started; I'll update this notice if frawk's status changes. 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: * Overview: what frawk is all about, how it differs from Awk. * Types: A quick gloss on frawk's approach to types and type inference. * Parallelism: An overview of frawk's parallelism support. * Benchmarks: A sense of the relative performance of frawk and other tools when processing large CSV or TSV files. * Builtin Functions Reference: A list of builtin functions implemented by frawk, including some that are new when compared with Awk. frawk is dual-licensed under MIT or Apache 2.0. Installation Note: frawk uses some nightly-only Rust features by default. Build without the unstable feature to build on stable. You will need to install Rust. If you have not updated rust in a while, run rustup update nightly (or rustup update if building using stable). If you would like to use the LLVM backend, you will need an installation of LLVM 12 on your machine: * See this site for installation instructions on some debian-based Linux distros. See also the comments on this issue for docker files that can be used to build a binary on Ubuntu. * On Arch pacman -Sy llvm llvm-libs and a C compiler (e.g. clang) are sufficient as of September 2020. * brew install llvm@12 or similar seem to work on Mac OS. Depending on where your package manager puts these libraries, you may need to point LLVM_SYS_120_PREFIX at the llvm library installation (e.g. /usr/lib/llvm-12 on Linux or /usr/local/opt/llvm@12 on Mac OS when installing llvm@12 via Homebrew). Building Without LLVM While the LLVM backend is recommended, it is possible to build frawk only with support for the Cranelift-based JIT and its bytecode interpreter. To do this, build without the llvm_backend feature. The Cranelift backend provides comparable performance to LLVM for smaller scripts, but LLVM's optimizations can sometimes deliver a substantial performance boost over Cranelift (see the benchmarks document for some examples of this). Building Using Stable frawk currently requires a nightly compiler by default. To compile frawk using stable, compile without the unstable feature. Using rustup default nightly, or some other method to run a nightly compiler release is otherwise required to build frawk. Building a Binary With those prerequisites, cloning this repository and a cargo build --release or cargo [+nightly] install --path will produce a binary that you can add to your PATH if you so choose: $ cd # With LLVM $ cargo +nightly install --path . # Without LLVM, but with other recommended defaults $ cargo +nightly install --path . --no-default-features --features use_jemalloc,allow_avx2,unstable frawk is now on crates.io, so running cargo +nightly 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 does appear to build on Windows with default features disabled; see comments on this issue for more information. Bugs and Feature Requests 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. About an efficient awk-like language Resources Readme License Apache-2.0, MIT licenses found Licenses found Apache-2.0 LICENSE-APACHE MIT LICENSE-MIT Activity Stars 1.2k stars Watchers 14 watching Forks 30 forks Report repository Releases 2 v0.4.7 Latest Jan 2, 2023 + 1 release Packages 0 No packages published Contributors 10 * @ezrosent * @ghuls * @alexkleiman * @0xflotus * @barakplasma * @kianmeng * @alperyilmaz * @DCNick3 * @manakbisht * @robertevans-org Languages * Rust 99.0% * Other 1.0% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.