Unix cat和tail用于输出java程序

时间:2013-03-01 17:42:20

标签: bash tail cat

我有一个需要时间执行的java程序,我必须进行10次运行,我只对输出的最后5行感兴趣,实际输出运行数百行。因为我想平均输出我希望tail -5运行到文件中。我的参数中的一个参数(--random)在每次运行中都会不断变化。

我正在做以下事情:

for i in {1..10} ; do cat output| tail -5 | java -cp src.Tagger.java --random $1; done

对不起,我真的很不喜欢bash。

2 个答案:

答案 0 :(得分:1)

你应该确保你可以先执行你的java程序。您无法直接执行.java文件,必须进行编译。

如果您有文件src/Tagger.java,可以尝试使用

进行编译
javac -cp src src/Tagger.java

但如果它需要其他库或构建系统,则可能完全不同。如果您下载了此应用程序,请参阅项目文档。

这应该默默生成src/Tagger.class。完成后,您可以尝试使用

运行它
java -cp src Tagger --random 1234

尽管如此,如果它依赖于库,它将会有所不同。

如果可行,您最终可以开始尝试在循环中运行它:

for i in {1..10}
do 
    cat output| tail -5 | java -cp src Tagger --random 1234
done

答案 1 :(得分:1)

您希望java程序的输出首先输出,然后您需要拖尾文件。看起来您正在将输出作为输入提供给您的java程序。我不认为这就是你想要的。试试这个:

for i in {1..10}
do 
    java -cp src.Tagger.java --random $1 > output;
    tail -5 output;
done

我也怀疑你的java命令是否正确。运行java文件时,不应指定.java作为文件名。它需要从已编译的.class文件运行,而java命令则假定为.class,因此在命令行中不需要它。您还使用-cp(类路径),但似乎没有给它一个参数。我希望java命令更像是:

java -cp classesdir com.mydomain.myapp.Tagger