2011-07-13 6 views
6

Sono un programmatore java. Io uso molto gli script di bash per l'elaborazione del testo.Libreria Java per l'elaborazione di testo/stringhe simulari a utilità unix/linux

Utilità quali grep, sed, awk, tr, wc, find, insieme alle connessioni tra i comandi danno una combinazione così potente.

Tuttavia, per la programmazione bash mancano la portabilità, la testabilità e i più eleganti costrutti di programmazione esistenti in Java. Inoltre, rende più difficile l'integrazione negli altri prodotti Java.

Mi chiedevo se qualcuno sa di qualche libreria di elaborazione del testo Java che potrebbe offrire quello che sto cercando.

Sarebbe così bello essere in grado di scrivere:

Text.createFromFile("blah.txt).grep("-v","ERROR.*").sed("s/ERROR/blah/g").awk("print $1").writeTo("output.txt") 

questo potrebbe essere torta-in-in-the-sky roba. Ma ho pensato di mettere la domanda là fuori comunque.

risposta

2

Unix4j implementa alcuni comandi unix base, concentrandosi principalmente del testo-elaborazione (con supporto di tubazione tra comandi): http://www.unix4j.org

Esempio (esempio di Ben, ma senza awk come questo non è attualmente supportato):

Unix4j.fromStrings("1:here is no error", "2:ERRORS everywhere", "3:another ERROR", "4:nothing").toFile("blah.txt"); 
Unix4j.fromFile("blah.txt").grep(Grep.Options.v, "ERROR.*").sed("s/ERROR/blah/g").toFile("output.txt");  
Unix4j.fromFile("output.txt").toStdOut();  

>>> 
1:here is no error 
4:nothing 

Nota:

  • l'autore della questione è coinvolto nel progetto unix4j
2

Che ci crediate o meno, ma ho usato Ant incorporato per molte di quelle attività.


Aggiornamento

Formica ha Java API che permettono di essere chiamato da progetti Java. Questa è la modalità incorporata. Questo è un riferimento a And Api 1.6.1. La distribuzione dovrebbe includere anche i documenti.

Per utilizzarlo, è necessario creare un nuovo oggetto task, impostare i parametri appropriati ed eseguirlo esattamente come si farebbe in build.xml ma tramite Java Api. Di quanto tu possa eseguire il tuo compito.

Qualcosa di simile

ReplaceRegExp regexp = new ReplaceRegExp(); 
regexp.setMatch("bla"); 
regexp.setFile(new File("inputFile")); 
regexp.execute(); 

Potrebbe essere necessario configurare alcune altre cose pure.

Non sono sicuro se risolve il problema, ma Ant ha un sacco di codice per fare le cose. Basta cercare tra i documenti.

+0

Ciao Alex, potresti spiegare cosa intendi con Ant incorporato? Saluti, B – Ben

+0

Ciao Ben, ho aggiornato la mia risposta. In bocca al lupo! –

+0

Ciao Alex. Grazie, è molto bello saperlo. – Ben