2011-07-13 32 views
6

Tôi là một lập trình viên java. Tôi sử dụng các tập lệnh bash rất nhiều để xử lý văn bản.Thư viện Java để xử lý chuỗi văn bản/chuỗi với các tiện ích unix/linux

Các tiện ích như grep, sed, awk, tr, wc, find, cùng với đường ống giữa các lệnh cho phép kết hợp mạnh mẽ như vậy.

Tuy nhiên, lập trình bash thiếu tính di động, khả năng thử nghiệm và các cấu trúc lập trình thanh lịch hơn tồn tại trong Java. Nó cũng làm cho nó khó khăn hơn để tích hợp vào các sản phẩm Java khác của chúng tôi.

Tôi đã tự hỏi nếu có ai biết về bất kỳ thư viện xử lý văn bản Java nào có thể cung cấp những gì tôi đang tìm kiếm.

Nó sẽ rất mát mẻ để có thể viết:

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

Điều này có thể pie-in-in-the-sky thứ. Nhưng dù sao thì tôi cũng đặt câu hỏi đó ra.

Trả lời

2

Unix4j thực hiện lệnh một số unix cơ bản, chủ yếu tập trung vào xử lý văn bản (với sự hỗ trợ cho đường ống giữa các lệnh): http://www.unix4j.org

Ví dụ (ví dụ Ben, nhưng không awk như thế này hiện không được hỗ trợ):

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 

Lưu ý:

  • tác giả của câu hỏi có liên quan đến dự án unix4j
2

Tin hay không, nhưng tôi đã sử dụng Ant được nhúng cho nhiều tác vụ đó.


Cập nhật

Ant có api Java cho phép nó được gọi từ các dự án Java. Đây là chế độ nhúng. Đây là tham chiếu đến And Api 1.6.1. Phân phối cũng nên bao gồm tài liệu.

Để sử dụng nó, bạn sẽ tạo đối tượng nhiệm vụ mới, thiết lập các tham số thích hợp và thực thi nó giống như bạn làm trong tệp build.xml nhưng thông qua Java Api. Hơn bạn có thể chạy nhiệm vụ của bạn.

Something như

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

Bạn có thể cần phải thiết lập một số công cụ khác nữa.

Không chắc chắn nếu nó giải quyết được vấn đề của bạn, nhưng Ant có rất nhiều mã để làm việc. Chỉ cần tìm kiếm thông qua tài liệu.

+0

Xin chào Alex, bạn có thể giải thích ý của bạn bằng cách nhúng Ant không? Chúc mừng, B – Ben

+0

Xin chào Ben, tôi đã cập nhật câu trả lời của mình. Chúc may mắn! –

+0

Xin chào Alex. Cảm ơn, điều đó rất tốt để biết. – Ben

Các vấn đề liên quan