- Notifications
You must be signed in to change notification settings - Fork 15
Home
Mahmoud Ben Hassine edited this page Feb 11, 2018 · 13 revisions
UnixStream is an extension of the Java 8 Stream API to process data pipelines the Unix way. It provides a set of components that mimic Unix commands (and more).
- 100% compatible with Java 8 Streams
- Intuitive, flexible and extensible API
- A toolbox of reusable components
- No dependencies
- Free and open source
You can use UnixStream in 3 ways:
Stream<String> stream = Stream.of("foo", "bar", "bar", "baz"); UnixStream.unixify(stream) .grep("a") .sort() .uniq() .nl() .to(stdOut()); // prints: // 1 bar // 2 baz
// cat input.txt | grep a | sort | uniq | nl > output.txt UnixStream.cat("input.txt") .pipe(grep("a")) .pipe(sort()) .pipe(uniq()) .pipe(nl()) .to(file("output.txt"));
Stream.of("1,foo", "2,bar") .filter(grep("a")) .map(cut(",", 2)) .forEach(System.out::println); //prints: //bar
UnixStream provides a toolbox of reusable components that mimic Unix commands (and more). Components are inspired by the Unix philosophy and are intended to be:
- Small
- Portable
- Do one thing and do it well
- Side-effect free
You will find in this wiki a complete reference of all built-in components (see sidebar).
The Stage
interface represents a stage of the pipeline:
public interface Stage<I,O> { Stream<O> apply(Stream<I> input); }
All built-in components are implemented as filters/transformers through this interface. You can implement this interface to create your own components.
UnixStream is created with passion by Mahmoud Ben Hassine