Я написал команду
for i in `cat ./files/logs1.txt | grep -o '[[:digit:]]*' | cut -c 1-3 | sort| uniq -c | sort -nr | sed 1d | head -n 10 | awk '{print $2}' `; do grep ^$i ./files/logs1.txt > $i.txt; done
, которая отлично работает с терминала.Но мне нужно запустить его с помощью Java.Я пытался использовать Runtime.getRuntime (). Exec () и ProcessBuilder, но я не уверен, как разбить эту команду на строковый массив, который помог бы мне выполнить это.
String myCommand = "for i in `cat ./files/logs1.txt | grep -o '[[:digit:]]*' | cut -c 1-3 | sort| uniq -c | sort -nr | sed 1d | head -n 10 | awk '{print $2}' `; do grep ^$i ./files/logs1.txt > $i.txt; done";
Process p = r.exec(new String[] { "bash", "-c", myCommand });
p.waitFor();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();