Shell apache commons cli如何解析\\t字符

Shell apache commons cli如何解析\\t字符,shell,command-line,command-line-interface,backslash,apache-commons-cli,bash,Shell,Command Line,Command Line Interface,Backslash,Apache Commons Cli,Bash,我需要在commons cli中将tab作为参数传递。当我将参数指定为“\\t”时,命令行解析器将其解析为“\t”字符本身,而不是TAB()空格。我怎样才能做到这一点 编辑: 正如@centic所建议的,用我如何调用应用程序更新问题。我在Unix中使用命令行调用,其中反斜杠被检测为转义字符 更准确地说,我在提交hadoop流媒体作业时使用它,如果这有帮助的话。例如: hadoop jar$hadoop_HOME/share/hadoop/tools/lib/hadoop-streaming-2.

我需要在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 mapper.py-file reducer.py-reducer reducer.py-input/in-output/out


Apache Hadoop使用Apache Commons cli作为命令行实用程序。因此,我假设“\\t”解析为“\t”,并作为选项传递。但是,当我通过调试hadoop源代码来打印它时,它本身打印为“\t”(字符串文字),而不是制表符空白字符

当您试图在shell中调用应用程序时,这实际上与shell如何处理此类特殊字符有关,而不是与commons cli或Java有关

shell(目前大多数unix/linux版本上的默认shell)具有特殊语法
$'\t'
,请参见手册中的

所以你的电话是这样的

HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.4.0.jar -D 
stream.map.output.field.separator=$'\t' -file mapper.py -mapper 
mapper.py -file reducer.py -reducer reducer.py -input /in -output /out

您是否尝试过“”,即引号中的实际选项卡?我的目标是了解commons cli如何解析反斜杠本身。根据UTF-8字符集,解析后使用\\\t解析为\\t(空白字符),是否正确?如果不是,为什么我不能使用像\\t、\\n这样的特殊字符作为空白字符?您还可以通过其他方式实现这一点?也许您可以编辑问题并列出您调用应用程序的确切方式。还有其他可能会产生干扰的部分,例如unix上的shell通常也会将反斜杠解释为转义字符,因此可能已经损坏了那里的内容…@centic-相应地更新了问题。