Sinceramente non ho mai provato, ma credo tu debba eseguire una shell a cui far eseguire successivamente i comandi.

Il pipe non è un "comando", ma è una funzione messa a disposizione dalla shell dei comandi. Quando la shell incontra il carattere di pipe, effettua una fork e nel processo figlio esegue una funzione di sistema "pipe" che consente di agganciare il canale di output del primo processo con il canale di input del secondo (detto molto in soldoni).

Quando, invece, esegui da Java un Runtime.exec(), quello che il sistema operativo fa è di eseguire il processo passato dalla exec() e di agganciare i suoi input e output stream a quelli del processo chiamante (la JVM, che di fatto può leggere e scrivere dal/verso il processo, usanto getInputStream() e getOutputStream() dell'oggetto Process).

Quindi, se vuoi ottenere l'esecuzione di un pipe di comandi, dovrai far fare il lavoro di aggancio in pipe ad un processo che sia in grado di farlo... e questo processo è una shell.

In pratica, dovresti provare ad eseguire questo (ripeto, non l'ho mai provato):

codice:
Process p = Runtime.getRuntime()
                .exec("/bin/bash -c \"ifconfig -a | grep -Eo \"^[a-z]+[0-9]*\"\"");
Ciao.