我试图在一个tableName_tOracleOutput_1 = "文件中找到包含这个表达式.java的行(在本例中只有一个可能的结果)。我直接在cmd.exe上使用cmd.exe命令,但是输出不是我所期望的,正如您可以看到的:
C:\Users\miguilem\Desktop\test_folder>findstr "tableName_tOracleOutput_. ^= /"" dt_dea_kaspersky.java
String tableName_tOracleOutput_1 = null;
tableName_tOracleOutput_1 = "dt_dea_kaspersky";
tableName_tOracleOutput_1 = dbschema_tOracleOutput_1 + "."
+ tableName_tOracleOutput_1
"mo_dwh/dt_dea_kaspersky_0_1/contexts/"这个结果将与表达式末尾省略双引号几乎相同(给出我不需要的结果,我只想要包含相等和空格后面的双引号的行)。这是带有省略的双引号的命令的结果,(显然)不能给出我想要的结果。
C:\Users\miguilem\Desktop\test_folder>findstr "tableName_tOracleOutput_. ^= " dt_dea_kaspersky.java
String tableName_tOracleOutput_1 = null;
tableName_tOracleOutput_1 = "dt_dea_kaspersky";
tableName_tOracleOutput_1 = dbschema_tOracleOutput_1 + "."
+ tableName_tOracleOutput_1(请注意这两个输出的不一致性,显然转义的双引号不会被完全忽略,它们显然会导致任意额外的鬼线在任何地方都不存在,这一行(mo_dwh/dt_dea_kaspersky_1/ the /)甚至不存在于代码中或整个文件系统的任何位置的文件名中)我用notepad++检查了新行字符,它看起来像预期的那样(标准CR_LF)。
除了完全无用的官方文档(这实际上是要求用户在未链接的命令行指南上阅读其他地方)之外,我还在这里查看了相关信息:
在这一点上,我想我错过了一些非常基本的东西,如果你需要任何其他信息来复制或解决问题,请不要犹豫!谢谢。
发布于 2018-12-03 15:13:56
没有更多选项的"tableName_tOracleOutput_. ^= /""被解释为正则表达式字符串搜索区分大小写的tableName_tOracleOutput_,在行或的开头,. 或 =再匹配一个字符,一个斜杠,后面跟着一个双引号。双引号搜索字符串中的空格字符被解释为或。
用于搜索任务的命令行是:
findstr /R /C:"tableName_tOracleOutput_. = "" dt_dea_kaspersky.java选项/C:通常用于文字搜索字符串。但是在这种情况下,双引号中的字符串被解释为正则表达式字符串,因为另外使用了选项/R,与"tableName_tOracleOutput_. = ""相比有一个重要的区别:空格字符不是被解释为或表达式,而是解释为文字字符。
搜索字符串末尾的"可以用\转义,但这并不是必要的。
https://stackoverflow.com/questions/53596287
复制相似问题