首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在findstr表达式中转义双引号会导致输出错误。

在findstr表达式中转义双引号会导致输出错误。
EN

Stack Overflow用户
提问于 2018-12-03 14:55:56
回答 1查看 181关注 0票数 2

我试图在一个tableName_tOracleOutput_1 = "文件中找到包含这个表达式.java的行(在本例中只有一个可能的结果)。我直接在cmd.exe上使用cmd.exe命令,但是输出不是我所期望的,正如您可以看到的:

代码语言:javascript
复制
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/"

这个结果将与表达式末尾省略双引号几乎相同(给出我不需要的结果,我只想要包含相等和空格后面的双引号的行)。这是带有省略的双引号的命令的结果,(显然)不能给出我想要的结果。

代码语言:javascript
复制
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)。

除了完全无用的官方文档(这实际上是要求用户在未链接的命令行指南上阅读其他地方)之外,我还在这里查看了相关信息:

  1. Escaping Double Quotes in Batch Script
  2. http://www.robvanderwoude.com/findstr.php
  3. https://ss64.com/nt/findstr.html
  4. http://www.robvanderwoude.com/escapechars.php

在这一点上,我想我错过了一些非常基本的东西,如果你需要任何其他信息来复制或解决问题,请不要犹豫!谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-03 15:13:56

没有更多选项的"tableName_tOracleOutput_. ^= /""被解释为正则表达式字符串搜索区分大小写的tableName_tOracleOutput_,在行的开头,. =再匹配一个字符,一个斜杠,后面跟着一个双引号。双引号搜索字符串中的空格字符被解释为

用于搜索任务的命令行是:

代码语言:javascript
复制
findstr /R /C:"tableName_tOracleOutput_. = "" dt_dea_kaspersky.java

选项/C:通常用于文字搜索字符串。但是在这种情况下,双引号中的字符串被解释为正则表达式字符串,因为另外使用了选项/R,与"tableName_tOracleOutput_. = ""相比有一个重要的区别:空格字符不是被解释为表达式,而是解释为文字字符。

搜索字符串末尾的"可以用\转义,但这并不是必要的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53596287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档