首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FINDSTR拒绝匹配EOL

FINDSTR拒绝匹配EOL
EN

Stack Overflow用户
提问于 2014-10-30 05:46:43
回答 3查看 716关注 0票数 1

鉴于以下内容以文本形式列出:

一位大师 一次释放 一个release2 一次释放

有谁能解释一下为什么

findstr /i /r /c:“发行版$”

不返回2行吗?

在阅读了几个小时关于windows findstr命令的所有可以想象的内容之后,似乎不可能让$字符与EOL匹配。请注意,使用/E开关而不是$并没有什么不同。我正在运行Windows 7。

有人能想出任何方法来匹配只使用标准windows命令的第2行吗?如果必要的话,我会求助于grep,但我不敢相信没有办法解决这个问题。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-30 06:45:29

如果数据中没有不可见的字符,最可能的原因是行终止字符。如果管道行没有以回车/行提要(0x0D0x0A)字符结尾,findstr将不匹配该行的末尾。

试着做些像

代码语言:javascript
复制
sourceofdata | more | findstr /r /c:"a release$"
sourceofdata | find /v "" | findstr /r /c:"a release$"

findmore都会更改行的结尾。如果有效的话,你已经找到了问题的根源。

如果没有,here (如果您还没有阅读它),您将发现关于findstr如何失败的大量文档。

票数 2
EN

Stack Overflow用户

发布于 2020-08-30 19:38:31

你提到了“管道”短信。我只是遇到了这个问题,在堆里搜索。对我来说,findstr /R和echo命令对于DOS (或cmd)中的管道有一些奇怪的怪癖。

我试图匹配以.jpg结尾的文件,所以为了测试,我的命令是:

代码语言:javascript
复制
    echo  "myfile spaces in name.jpg" | findstr /i /r "\.jpg$"

但那不管用。我使用gnu来查找,在管道的输出中插入一个空格之前,用一个空格回显。由于我非常习惯UNIX样式的回显和正则表达式,所以我不希望在回显测试中的文件名之后插入额外的空间。

为了修复,我在regex中的jpg后面添加了一个“*”(空格星),(以匹配0或更多的空格):

代码语言:javascript
复制
    echo  "myfile spaces in name.jpg" | findstr /i /r "\.jpg *$"

效果很好。**

使用GNU的八进制转储命令(八进制空间为040 )进行验证:

代码语言:javascript
复制
    c:\>echo "myfile.jpg" | od -cb
    0000000   "   m   y   f   i   l   e   .   j   p   g   "      \r  \n
            042 155 171 146 151 154 145 056 152 160 147 042 040 015 012

现在,如果我移除“\”管道之前的空间,它就会消失:

代码语言:javascript
复制
    c:\>echo "myfile.jpg"| od -cb
    0000000   "   m   y   f   i   l   e   .   j   p   g   "  \r  \n
            042 155 171 146 151 154 145 056 152 160 147 042 015 012

这种情况不应该发生在DOS中的文本文件中,也不应该通过管道过滤大多数命令,但如果像我一样使用echo进行快速命令行测试,则会发生这种情况。

** 另一个奇怪的(至少在findstr的Win10版本中),它忽略了行尾处的双引号。

票数 3
EN

Stack Overflow用户

发布于 2014-10-30 09:46:14

恐怕行不通。/c说做字面上的,不定期的表达。不过,您可以让它与命令行开关一起工作。你在写命令之前查过参考资料了吗。

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

https://stackoverflow.com/questions/26645911

复制
相关文章

相似问题

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