【发布时间】:2015-08-28 18:27:48
【问题描述】:
我需要在 commons-cli 中将 tab 作为参数传递。当我将参数设为“\\t”时,命令行解析器会将其解析为“\t”字符本身,而不是 TAB ( ) 空格。我怎样才能做到这一点?
编辑:
正如@centic 所建议的,用我如何调用应用程序来更新问题。我在 Unix 中使用命令行调用,其中反斜杠被检测为转义字符。
更准确地说,我在提交 hadoop 流作业时使用它,如果这有帮助的话。例如:
hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.4.0.jar -D stream.map.output.field.separator="\t" -file mapper.py -mapper 映射器。 py -file reducer.py -reducer reducer.py -input /in -output /out
Apache Hadoop 使用 Apache Commons-cli 作为命令行实用程序。所以我假设“\\t”解析为“\t”并作为选项传递。但是当我通过调试 hadoop 源代码打印它时,它不是 TAB 空格字符,而是打印为“\t”(字符串文字)本身。
【问题讨论】:
-
您尝试过“”,即引号中的实际标签吗?
-
我的目标是了解 commons-cli 如何解析反斜杠本身。我使用 \\\t 是否正确,我假设在解析后解析为 \\t 根据 UTF-8 字符集是制表符(空白字符)?如果不是,为什么我不能使用特殊字符,如 \\t、\\n 作为空白字符?否则您将如何实现这一目标?
-
也许您可以编辑问题并列出您调用应用程序的准确程度。还有其他可能干扰的部分,例如unix 上的 shell 通常也将反斜杠解释为 escape-char,因此那里的东西可能已经被你破坏了......
-
@centic - 相应地更新了问题。
标签: shell command-line command-line-interface backslash apache-commons-cli