Trellis processes structured and semi-structured data at field-level granularity. Split, transform, aggregate, and route records through pattern-driven pipelines — no cluster, no schema, no overhead. Just your data, processed exactly how you need it.
Trellis exposes the full power of structured data processing through a composable, operator-driven API. No abstraction leaks. No hidden complexity.
Set your field separator to any character or regex. CSV, TSV, pipe-delimited, colon-separated —
Trellis splits your records instantly with -F. No format configuration files. No
schema declarations. One flag, any structure.
Reference any field by position. $1 is the first column, $NF is the
last. Select, rearrange, and compute across fields with surgical precision. This is the core of
Trellis — every record decomposed into addressable atoms.
Every rule in Trellis is a pattern-action pair. Match on regex, numeric comparisons, or field values — then execute arbitrary transformations. It's declarative ETL without the YAML.
Execute setup logic before the first record with BEGIN. Finalize, aggregate, and
report after the last record with END. Print headers, compute summaries, flush
caches — all built into the processing lifecycle.
Trellis exposes NR (total records seen), NF (fields in current record),
FILENAME, FNR, and more. Real-time metadata about your pipeline state
— no manual counters, no external bookkeeping.
Produce perfectly aligned, type-safe output with C-style printf. Control column
widths, decimal precision, padding, and justification. Generate reports that are pipe-ready
and human-readable.
Regex substitution with gsub and sub. String slicing with
substr. Tokenization with split. Case conversion with
tolower / toupper. Transform data in the same pass you read it — zero
intermediate files.
Associative arrays are first-class citizens. Group by any field, count occurrences, sum values,
build histograms — all in a single pass through your data. No external databases. No MapReduce
overhead. Just arr[key] += val.
Trellis processes your data in a deterministic, streaming pipeline. Each record flows through the same stages, every time.
Trellis reads your input line by line — files, stdin, or piped output — and splits each
record into fields using your configured delimiter. CSV, TSV, fixed-width, or custom regex.
Fields are immediately addressable as $1, $2, … $NF.
Each record is evaluated against your pattern rules — regex matches, field comparisons, range expressions, compound boolean logic. Only matching records proceed to their associated action block. Non-matching records are skipped at zero cost.
Action blocks execute arbitrary computations: field extraction, string manipulation,
arithmetic, aggregation into associative arrays, formatted output via printf.
Multiple rules can fire on the same record. State persists across records.
END blocks fire after the last record. Emit summary statistics, flush
accumulators, write final reports. Output goes to stdout, files, or downstream pipes.
Trellis is a first-class Unix citizen — it composes with everything.
Traditional ETL tools weren't designed for streaming, field-level processing. Trellis was.
| Capability | Trellis | Pandas | SQL | Spark |
|---|---|---|---|---|
| Zero-config setup | ✓ | — | — | — |
| Streaming processing | ✓ | — | — | ✓ |
| Zero dependencies | ✓ | — | — | — |
| Regex pattern matching | ✓ | ✓ | Partial | ✓ |
| Field-level access | ✓ | ✓ | ✓ | ✓ |
| Pipe composability | ✓ | — | — | — |
| Memory footprint | <1 MB | ~200 MB | ~50 MB | ~2 GB |
| Startup time | <1 ms | ~2 s | ~500 ms | ~15 s |
Real processing pipelines. Real output. Click a tab to explore different use cases.
Every tier unlocks real processing capabilities. Scale when you're ready.
$1–$9)$1–$NF)-F)-v)-M)--csv)-S)-p, -D)Trellis supports any delimited text format out of the box — CSV, TSV, pipe-delimited,
colon-separated, and more. Set your delimiter with -F and Trellis handles the rest.
For CSV with quoted fields, use the --csv flag (Enterprise). Fixed-width data is
supported via FIELDWIDTHS, and content-based splitting via FPAT.
Absolutely. Trellis is SOC 2 Type II certified and GDPR compliant. Our Enterprise tier includes
sandbox mode (-S) which completely disables system calls, file redirection, and
dynamic extensions — giving you a fully locked-down processing environment. Your data never
leaves your infrastructure.
For structured data processing tasks, Trellis pipelines are typically 10-100x faster than equivalent Python scripts, use negligible memory, and require zero dependencies. A typical Trellis pipeline is a single line that replaces 50-200 lines of Python. For complex ML or statistical workloads, Python is still the right choice — but for ETL, aggregation, and transformation, Trellis is unbeatable.
Yes. Trellis runs entirely locally with zero network dependencies. It processes data on your machine, in your terminal, with no cloud calls. This is by design — when we say "your data never leaves your infrastructure," we mean it literally.
Yes. On Team and Enterprise tiers, you can define reusable functions with full recursion support,
local variable scoping, and pass-by-reference arrays. Build libraries of domain-specific
transformations and share them across your organization via @include.
Start processing structured data in seconds. No infrastructure. No dependencies. No excuses.