Backed by mandō
Slice is the precision field extraction engine that cuts structured data into exactly the columns you need. Delimiter-aware, byte-precise, character-perfect — the extraction primitive every data pipeline secretly depends on.
Shipped by teams at
Features
We took the most precise column extraction tool ever built and gave it a platform. Seven core features. Zero wasted bytes.
Select exactly the fields you need by position. Single fields, ranges, comma-separated lists — FieldSelect™ extracts columns from delimited data with zero ambiguity. The extraction primitive that makes CSV, TSV, and log parsing trivial.
Specify any single character as your field separator. Tab by default, but DelimiterEngine™ handles colons, commas, pipes, semicolons — any character that separates your structured data into extractable columns.
Extract by character position. Fixed-width fields, positional data formats, log file prefixes — CharSlice™ cuts at exact character boundaries regardless of delimiters. Precision extraction for structured and unstructured data alike.
Select by byte offset for binary-safe extraction. Multi-byte character awareness, binary protocol parsing, raw data slicing — ByteCut™ operates at the lowest level of text extraction. When characters aren't enough.
Invert your selection. Instead of specifying what to keep, specify what to drop. Complement™ flips the extraction set — select everything except fields 3 and 5. The inverse operation that makes exclusion as easy as inclusion.
Suppress lines that don't contain the delimiter. StrictMode™ filters out headers, comments, and malformed rows automatically — only lines with actual delimited structure make it through the pipeline.
Transform the delimiter on output. Read CSV, emit TSV. Parse colon-separated, output pipe-delimited. OutputDelim™ decouples input format from output format — the delimiter transformation primitive for format migration.
How It Works
Pipe any structured input — CSV files, log output, passwd entries, command results — into the Slice engine. Each line is processed independently, ready for extraction.
Slice tokenizes each line by your chosen delimiter. Tab by default, or any character you specify
with -d. Every field gets a position number, starting at 1.
Specify fields by number, range, or list. -f1,3 for specific columns.
-f2-5 for ranges. -c1-16 for character positions. -b1-8
for byte offsets. Precise extraction, every time.
Selected fields stream to stdout, joined by the output delimiter. Pipe to the next tool, redirect to a file, or feed directly into your data pipeline. Zero overhead. Zero ambiguity.
Pricing
From quick field grabs to enterprise-grade column extraction. Pick the tier that matches your data velocity.
For individual developers parsing logs and CSVs.
-f)-c)For teams running production data pipelines.
-d)-f1,3,5)-f2-7)-b)-s)For engineering orgs shipping data at scale.
--complement)--output-delimiter)-z)For organizations with compliance and SLA needs.
Testimonials
"We were writing Python scripts to extract columns from CSVs. Then we
discovered Slice. One invocation of -d',' -f2,5,8 replaced 40 lines of pandas. We
literally deleted a microservice."
"The --complement flag is what sold me. Instead of
selecting 18 out of 20 columns, I just exclude the 2 I don't need. Complement™ is the kind of
feature that makes you rethink your entire ETL pipeline."
"We parse 2TB of access logs daily. Slice with
-d' ' -f1,4,7 extracts IP, timestamp, and path in under 90 seconds. Nothing else
comes close. This is the data primitive we were missing."
"OutputDelim™ is underrated. We ingest colon-separated LDAP data and emit tab-separated output for downstream tools. Format conversion at extraction time. No intermediate transforms. Slice just gets it."
"I showed StrictMode™ to my team and three people immediately refactored their shell scripts. Suppressing lines without delimiters should have been the default all along. Slice is the discipline we needed."
Demo
Real commands, real output. Click an extraction mode to see it execute.
Comparison
| Capability | Slice | awk '{print $N}' | Python / pandas |
|---|---|---|---|
| Field extraction | ✓ Native, zero-config | Requires format string | Import + load + index |
| Delimiter flexibility | ✓ Any single char | ✓ -F flag | sep= parameter |
| Byte-level precision | ✓ -b flag | ✗ | Manual slicing |
| Complement / inversion | ✓ --complement | Manual negation | .drop() method |
| Pipeline composability | ✓ Native stdin/stdout | ✓ Native | Requires wrapper |
| Startup time | ✓ <1ms | ~2ms | ~400ms |
Changelog
-z / --zero-terminated uses NUL instead of newline as the line
delimiter. Process filenames with embedded newlines and binary-safe data streams.
--output-delimiter decouples input format from output format. Read
comma-separated, emit tab-separated. The format migration primitive.
--complement inverts your field/byte/character selection. Exclude instead of
include — the inversion primitive for when specifying what to drop is easier than what to
keep.
FAQ
-f selects by field position (delimiter-split columns). -c selects
by character position. -b selects by byte offset. Use -f for
structured delimited data like CSV/TSV. Use -c for fixed-width formats. Use
-b when you need byte-level precision with multi-byte character sets. You can
only use one mode per invocation.
Slice operates on single-character delimiters and does not parse quoted fields natively. For
simple CSVs without embedded commas in quoted strings, -d',' -f works
perfectly. For complex CSVs with quoted fields, pair Slice with a pre-processing step or use
it downstream after normalization. The Unix philosophy: do one thing perfectly.
By default, Slice prints these lines unmodified — they pass through as-is. Use
-s (StrictMode™) to suppress them entirely, ensuring only properly delimited
lines appear in your output. This is critical for filtering headers, comments, and malformed
rows.
Ranges are flexible: N selects one field, N-M selects an inclusive
range, N- selects from N to end of line, -M selects from first to
M. Combine with commas: -f1,3-5,8- selects field 1, fields 3 through 5, and
field 8 onward. Selected input is always written in the same order it appears in the source.
Yes. Use --output-delimiter to specify a different delimiter for the output. For
example, -d':' -f1,3 --output-delimiter=',' reads colon-separated input and
emits comma-separated output. The default output delimiter matches the input delimiter.
Join 9,000+ engineers who rely on Slice for every pipeline, every parse, every extraction.
No credit card. No sales call. Just precision field extraction.