How about Groovy?
("ls".execute() | "grep -i old".execute()).waitForProcessOutput(System.out, System.out)
It can also be written as
"ls".execute().or("grep -i old".execute()).waitForProcessOutput(System.out, System.out)
It's not exactly the same because it uses a thread and a buffer instead of an OS pipe but I guess it's close enough.