2011-07-13 7 views
6

मैं जावा प्रोग्रामर हूं। मैं टेक्स्ट प्रोसेसिंग के लिए बैश स्क्रिप्ट का उपयोग करता हूं।टेक्स्ट/स्ट्रिंग प्रसंस्करण के लिए जावा लाइब्रेरी यूनिक्स/लिनक्स उपयोगिताओं के लिए सिमुलर

आदेशों के बीच पाइपिंग के साथ grep, sed, awk, tr, wc, find जैसे उपयोगिताएं इतनी शक्तिशाली संयोजन देती हैं।

हालांकि बैश प्रोग्रामिंग में पोर्टेबिलिटी, टेस्टेबिलिटी और जावा में मौजूद अधिक सुरुचिपूर्ण प्रोग्रामिंग संरचनाएं नहीं हैं। यह हमारे अन्य जावा उत्पादों में एकीकृत करना भी कठिन बनाता है।

मैं सोच रहा था कि क्या कोई भी जावा टेक्स्ट प्रोसेसिंग लाइब्रेरी के बारे में जानता है जो मैं जो खोज रहा हूं उसे पेश कर सकता हूं।

यह इतना लिखने के लिए सक्षम होने के लिए शांत होगा:

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

यह पाई-इन-इन-द-आकाश सामान हो सकता है। लेकिन सोचा कि मैं वैसे भी सवाल बाहर रखूंगा।

उत्तर

2

Unix4j लागू करता है कुछ बुनियादी यूनिक्स कमांड, मुख्य रूप से (आदेशों के बीच पाइपिंग के लिए समर्थन के साथ) पाठ प्रसंस्करण पर ध्यान केंद्रित: http://www.unix4j.org

उदाहरण (बेन उदाहरण है, लेकिन awk के बिना के रूप में इस समय समर्थित नहीं है):

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 

नोट:

  • प्रश्न के लेखक unix4j परियोजना में शामिल है
2

मानो या नहीं, लेकिन मैंने उन कार्यों में से कई के लिए एम्बेडेड चींटी का उपयोग किया।


अद्यतन

चींटी जावा एपीआई कि यह जावा परियोजनाओं से कहा जा करने की अनुमति है। यह एम्बेडेड मोड है। यह And Api 1.6.1 का संदर्भ है। वितरण में दस्तावेज़ भी शामिल होना चाहिए।

इसका उपयोग करने के लिए, आप नई टास्क ऑब्जेक्ट बनाएंगे, उचित पैरामीटर सेट करेंगे और जैसे ही आप build.xml में करेंगे, लेकिन जावा एपी के माध्यम से इसे निष्पादित करेंगे। आप अपना काम चला सकते हैं।

कुछ

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

साथ ही आप कुछ अन्य सामान की स्थापना करने की आवश्यकता हो सकती है।

सुनिश्चित नहीं है कि यह आपकी समस्या का समाधान करता है, लेकिन चींटियों के पास चीजों को करने के लिए बहुत सारे कोड हैं। बस दस्तावेज़ों के माध्यम से खोजें।

+0

हाय एलेक्स, क्या आप कृपया बता सकते हैं कि एम्बेडेड चींटी से आपका क्या मतलब है? चीयर्स, बी – Ben

+0

हाय बेन, मैंने अपना जवाब अपडेट किया। शुभ लाभ! –

+0

हाय एलेक्स। धन्यवाद, यह जानना बहुत अच्छा है। – Ben