Board logo

标题: [文本处理] 【分享】BAT命令findstr中/R参数的思考 [打印本页]

作者: qixiaobin0715    时间: 2021-1-11 15:25     标题: 【分享】BAT命令findstr中/R参数的思考

findstr是cmd命令中比较另类,比较复杂的一个命令。其参数众多,功能强大,有很多组合方式,不同场合用法迥异,一不小心就会中套路。
我在使用此命令时就遇到过不少陷阱,虽然对大多数问题还是一知半解,但经过多次的失败和成功,还是有那么一点点体会。现分享给大家。
记得不少教程里说过:设置findstr的参数/R有点多余,findstr默认为“一般表达式模式”,加与不加都一样。我就想设计程序的都是聪明人,不会无缘无故的搞出这么个无用的参数吧。
开始使用findstr时确实是不加/r,能够实现“一般表达式”的功能,随着时间推移,发现有2种情况还是加上参数才行:
1.第一种是使用"/C:string 使用指定字符串作为文字搜索字符串"时,当用于纯字符串时,并没有什么差别,如果使用通配符时,就需要加上/r。
例如:findstr /r /c:"[0-9] @" a.txt。显示a.txt中所有包含"数字 @"的行时,就必须加上/r,其它通配符也一样。
2.第二种是搜索多字符串,并且字符串中含有汉字时,也需要加上参数/r。
比如搜索文本文件中分别含有”张三,李四,王五“的所有行:findstr /r "张三 李四 王五" a.txt。
上面所说是个人的一点浅薄的见解,只是想抛砖引玉而已,不足之处希望大佬们更正。
作者: Batcher    时间: 2021-1-11 16:01

回复 1# qixiaobin0715


记得不少教程里说过:设置findstr的参数/R有点多余,findstr默认为“一般表达式模式”,加与不加都一样。

这个说法确实不严谨。

findstr 命令参数 /c 和 /r 的不同用处一例
http://bbs.bathome.net/thread-14682-1-1.html#pid99416

findstr 命令使用 /r 的时候需要注意转义字符的特殊处理
http://bbs.bathome.net/thread-498-1-1.html
作者: qixiaobin0715    时间: 2021-1-11 16:12

回复 2# Batcher
谢谢分享,又学到了需要转义的知识。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2