【问题标题】:writing command line output to text file将命令行输出写入文本文件
【发布时间】:2014-09-29 09:40:18
【问题描述】:

因为有使用> <outputfule.txt> 将结果写入输出文件的简单方法,但这在我的情况下不起作用

我有客户端服务器类型的场景,首先我启动服务器 -

java -mx500m -cp stanford-ner-with-classifier.jar edu.stanford.nlp.ie.NERServer -port 9191 -loadClassifier classifiers/english.all.3class.distsim.crf.ser.gz &

现在服务器处于监听模式。在这里,我在遇到问题时立即启动客户端。

java -cp stanford-ner-with-classifier.jar edu.stanford.nlp.ie.NERServer -port 9191 -client 

这要求输入输入句子并在按Enter键时在命令行上打印结果。我是这样尝试的

java -cp stanford-ner-with-classifier.jar edu.stanford.nlp.ie.NERServer -port 9191 -client > result.txt

立即停止客户端。如果它从文本文件中读取输入并将其写入结果文本文件,我就可以了。

这样做的正确方法是什么?

【问题讨论】:

    标签: java linux command-line


    【解决方案1】:

    如果我正确理解您的查询,您期望

    " java -cp stanford-ner-with-classifier.jar edu.stanford.nlp.ie.NERServer -port 9191 -client "

    从“result.txt”中获取输入。

    在这种情况下,你应该执行

    "java -cp stanford-ner-with-classifier.jar edu.stanford.nlp.ie.NERServer -port 9191 -client

    更正回复:

    那你应该试试这个。

    “java -cp stanford-ner-with-classifier.jar edu.stanford.nlp.ie.NERServer -port 9191 -client y.txt”

    从 x.txt 读取输入并将输出写入 y.txt

    【讨论】:

    • 对不起,你拿错了,我想从文件x.txt得到结果,想把结果写到y.txt
    【解决方案2】:

    如果你愿意,你可以同时重定向标准输入和标准输出:

    java -cp stanford.jar NERServer -port 9191 -client < input.txt > result.txt
    

    或者做这样的事情:

    echo -e "line1\nline2" | java -cp stanford.jar NERServer -port 9191 -client > r.txt
    

    在进行输入/输出重定向时,应用程序的运行方式与输入/输出不会被重定向时完全相同。

    它不知道也不关心您是从键盘输入输入还是从某个地方重定向。 所以它总是会在标准输出中打印相同的东西(在你的情况下)

    按 RETURN 对它进行 NER 标记,或者直接按 RETURN 完成

    除了在解释 results.txt 时丢弃第一行之外,您无能为力。

    【讨论】:

    • 谢谢,这是我需要的,但除了写结果,它还写消息Input some text and press RETURN to NER tag it, or just RETURN to finish
    • 这是消息,当用户执行客户端命令时会在命令行上打印出来
    • 这是一种方法,从结果中抛出第一行。是否可以从 jar 中提取代码并更改代码?
    • 可以对jar中的二进制类进行反编译,然后进行更改,甚至可以在字节码级别更改类。但我猜这是一个开源项目,所以如果你想要更改它只需下载源代码,进行更改并重建它。
    【解决方案3】:

    试试

    echo "input sequence" | xargs java -cp stanford.jar NERServer -port 9191 -client > result.txt
    

    这将用于将带有参数的命令重定向到文件。

    如果您只是想将参数传递给命令,那么您只需要

    java -cp stanford.jar NERServer -port 9191 -client < result.txt`
    

    cat params.txt | xargs java -cp stanford.jar NERServer -port 9191 -client
    

    xargs 应该将您的参数从文件发送到java 程序

    附:为了简洁和可读性,我省略了包名称

    【讨论】:

    • 谢谢亲爱的,但这里有问题。当我遵循第一个命令时,而不是将输出写入result.txt它会写入消息Input some text and press RETURN to NER tag it, or just RETURN to finish.。这是执行客户端命令时在命令行上显示的消息
    猜你喜欢
    • 2015-06-23
    • 2012-02-18
    • 2011-04-17
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多