I am trying to run “cut” inside a java program, but I am lost in terms of how to split the array of commands.
My program in the command line is the following:
cut file.txt -d' ' -f1-2 > hits.txt
And I am trying to run it inside java like this
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(new String[]{"file.txt"," -d' ' -f1-2 "," > hits.txt"});
pr.waitFor();
But I get the following runtime error
Exception in thread "main" java.io.IOException: Cannot run program "cut file.txt": java.io.IOException: error=2, No such file or directory
I attribute this error to the array of Strings I am using as exec commands. Any ideas on how to do this? Also any known documentation on the issue. Thanks
Make either an script for bash:
or split
The error message clearly says:
so it interprets “cut file.txt” as a single programname with a blank inside.
Your problem starts with the redirection, because you can’t redirect the output that way:
You have to handle input and output streams. It might be a better idea to implement
cutin Java, to get a portable solution, or call a script which the user may specify on commandline or in a config file, so that it can be adapted for Windows or other platforms.Calling /bin/bash and redirecting there should work – on unix like systems.