标题: [文本处理] 【已解决】批处理命令findstr一些奇葩用法或者缺陷 [打印本页]
作者: 尘丶 时间: 2015-8-8 15:58 标题: 【已解决】批处理命令findstr一些奇葩用法或者缺陷
本帖最后由 尘丶 于 2015-8-10 10:58 编辑
学习了这么久,findstr还是不够熟悉,因为有些命令都不太常用,所以有许多问题也不太清楚,论坛里的findstr问题都比较零碎,找起来比较麻烦,希望大家把知道的findstr一些小BUG或者容易忽略的问题发出来,让大家都学习下, 其实算是我的小请求。
这是我学findstr看到的一些小问题
1.复制代码
结果:z复制代码
结果:空
2.findstr设计缺陷- wefwfw [test] findstr "\[test\]$"
复制代码
会查不到- wefwfw [test] findstr "\[test\]$"
复制代码
加个回车换行符才会查到
3.- echo;1 2|findstr /x "1 2"
复制代码
貌似有空格,findstr /x就会查不到
具体就这么多了,如有错希望大家纠正,也希望大家都发发自己知道的。
作者: DAIC 时间: 2015-8-8 16:23
第一个问题请参考:
http://bbs.bathome.net/thread-6851-1-1.html
http://bbs.bathome.net/thread-12314-1-1.html
第二个问题请参考:
http://bbs.bathome.net/thread-7629-1-1.html
第三个问题请尝试:
echo;1 2|findstr /x /c:"1 2"
作者: 尘丶 时间: 2015-8-8 16:34
回复 2# DAIC
findstr跟ASCII 字符有啥关系
作者: DAIC 时间: 2015-8-8 16:43
回复 3# 尘丶
关系就是:[A-Z]不是你想象的大写字母A到Z
作者: 尘丶 时间: 2015-8-8 17:34
回复 4# DAIC
百度到的 Findstr 可以在任何 ASCII 文件或文件中精确查找所要查找的文本。
查找跟那个大小有啥关系,大神能说说吗
作者: dizimotong 时间: 2015-8-8 18:26
回复 5# 尘丶
其实[A-Z]表示的是AbBcC...zZ(并不表示所有大写字母,而是表示缺少小写字母a的其余字母),所以你用复制代码
找不到结果,但是你把a换成其他字母就会有输出。
同理,[a-z]表示的是aAbBcC...z(比不表示所有小写字母,而是表示缺少大写字母Z的其余字母),所以你用复制代码
找不到结果,但是你把Z换成其他字母就会有输出。
因此,[a-Z]才表示所有字母。
作者: DAIC 时间: 2015-8-8 18:35
回复 5# 尘丶
百度上那些大彩笔、大水笔们的话你也信?
作者: 尘丶 时间: 2015-8-8 18:46
- -回复 7# DAIC
作者: 尘丶 时间: 2015-8-8 18:49
回复 6# dizimotong
原来是这样,感谢。
作者: WHY 时间: 2015-8-8 21:22
个人认为,flndstr作为系统自带的命令,对于简单的文本比较、字符串查找过滤还是非常方便的。
要找到臭虫,也要建立在熟练掌握其基本用法的基础之上才行
不完全了解其用法就去谈缺陷,不是好办法,更会让findstr初学者敬而远之
其实findstr对于正则的入门学习也很不错
正因为是阉割版正则,所以简单,适合入门。反正我当时学正则就是从findstr开始的
作者: 尘丶 时间: 2015-8-9 15:55
回复 10# WHY
你指熟练掌握其基本用法的基础之上,怎样算是熟练?我认为了解用法和缺陷这两个并不矛盾。
作者: WHY 时间: 2015-8-10 10:30
回复 11# 尘丶
以顶楼第3个"BUG" 为例,多加个开关 /c: 就能轻松解决的问题也属于BUG?
这不是什么BUG,或许 findstr 它就是这样设计的,称它为“奇葩的用法”更合适
类似地:- (echo 你好&echo 我好)|findstr "你 我"
复制代码
没有回显
但多加一个开关 /i 就有回显,你认为这也是BUG吗?
怎样才算熟练?如果你坚持认为这就是BUG,如果你不懂得多加一个开关 /c:来解决问题,那就不算熟练。
顺带提一下,findstr 的 "$" 匹配回车(Cr 0x0D \r)
作者: 尘丶 时间: 2015-8-10 10:58
回复 12# WHY
受教了,为啥是加/i? 可能我BUG这词描述不太恰当,对新手来说这些小问题就是一些小BUG了,对你们大神来说可能只是一些小问题。
作者: DAIC 时间: 2015-8-11 10:35
回复 13# 尘丶
/c: 的用法在帮助文档里面写的很清楚,可能是你以前没有注意过。
除非参数有 /C 前缀,请使用空格隔开搜索字符串。
例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中寻找 "hello" 或 "there"。'FINDSTR /C:"hello there" x.y' 文件 x.y 寻找 "hello there"。
作者: 尘丶 时间: 2015-8-11 12:55
回复 14# DAIC
搞明白了了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |