2017-01-24 3 views
1

Я пробовал код ниже, но он не работает. Тем не менее, если я попытаюсь сшить файл, он будет работать и печатает весь контент файла.Могу ли я использовать awk в java?

Но причина, по которой я пытался использовать awk, - это то, что мне не нужен весь контент, мне нужны только некоторые части каждой строки.

Runtime r = Runtime.getRuntime(); 
Process p = r.exec("awk -F\":\" '/in/ {print $3}' file.awk"); 
p.waitFor(); 
BufferedReader in=new BufferedReader(new InputStreamReader(p.getInputStream())); 
System.out.println("esto es una \"prueba\""); 
String valor = ""; 
while ((valor = in.readLine())!= null){ 
    System.out.println(valor); 
} 
+0

Это на самом деле не является альтернативой 'awk', но вы можете использовать' Pattern'/регулярное выражение Matcher для печати только совпадающих символов. – Roland

+0

Этот раздел несколько связан: http://stackoverflow.com/questions/26211696/executing-awk-command-in-java – Berger

+0

Рассматривали ли вы просто извлечение данных с помощью Java? –

ответ

0

Зачем вам нужно запускать awk для проблемы, которая настолько тривиальна? Если строка содержит строку «в», разделить его на «:» и вернуть третье поле:

BufferedReader reader = new BufferedReader(new FileReader(filename)); 
while(String line = reader.readLine()) { 
    if (line.indexOf("in") >= 0) { 
     String[] fields = line.split(":"); 
     System.out.println(fields[2]); 
    } 
} 
+0

это не так просто, что код не будет работать в моем приложении, я мог бы закодировать свой собственный «awk», но потребовалось бы время, чтобы я мог потратить кодирование на более важные вещи. –

+0

@ JoseMaríaLópezBonaque Почему бы не работать? –

+0

Я думал и, может быть, вы правы, возможно, я переборщил с моим кодом, спасибо ^^ –

1
jawk 

является реализация Java из AWK. Пожалуйста, перейдите по этой ссылке: http://jawk.sourceforge.net/

+1

Как вы предлагаете использовать JAWK для решения проблемы? –

Смежные вопросы