gpt4 book ai didi

regex - 包含制表符的 findstr 查询

转载 作者:行者123 更新时间:2023-12-05 03:10:22 24 4
gpt4 key购买 nike

我正在尝试使用 findstr 代替 grep 在准系统的 vanilla windows 框上(遗憾的是这是一个要求)。我有一些相对较大的文件 (1Gb+),我想提取那些不包括 MXMXnnBR 的行,和 BRnn 由制表符分隔。如果我正在编写一个“真正的”正则表达式,那么

\t(MX|BR)(..)?\t

会覆盖它。我不介意分两个阶段进行,但我似乎不能在我的生活中包含分隔符选项卡。

到目前为止我有:

findstr /V MX source.txt >> temp.txt
findstr /V BR temp.txt >> dest.txt

由于数据的性质,它做得还不错,但我真的更愿意使用类似的东西:

findstr /R /V "\t(MX|BR)(..)?\t" source.txt >> dest.txt

我试过双斜线,escape sequences等等,但似乎在原地打转。

如果可以的话,我不愿意求助于 VBScript。

考虑到普通窗口的局限性,有什么想法吗?


编辑

我已经研究过使用/G 选项生成排除文件,但是生成可能会开始出现问题,一旦用户了解了可能性 - 正则表达式会更容易很多 .

最佳答案

命令行或批处理文件中的可能解决方案是使用:

%SystemRoot%\System32\findstr.exe /V /R /C:"\<BR[0-9]*\>" /C:"\<MX[0-9]*\>" "source.txt"

文件source.txt因为 /V 搜索区分大小写 的行BR具有 0 个或多个数字 MX由于 \<,0 个或多个数字是一个完整的单词和 \>因为 /R 使用两个正则表达式搜索词\<BR[0-9]*\>\<MX[0-9]*\>它们与 FINDSTR 的逻辑或相结合。

这可能已经足以过滤 source.txt正确的。但它也会过滤掉包含 BR[0-9]* 的行或 MX[0-9]*被水平制表符以外的其他单词分隔符包围。

可以在批处理文件中使用:

%SystemRoot%\System32\findstr.exe /V /R /C:"[   ]BR[0-9]*[  ]" /C:"[    ]MX[0-9]*[  ]" "source.txt"

注意:批处理文件中的 4 对方括号之间必须有 1 个水平制表符。浏览器根据 HTML 规范将这 4 个制表符显示为 1 个或多个空格。

打开命令提示符窗口并运行 findstr /?有关 FINDSTR 的更多信息。

或许还可以阅读 Stack Overflow 文章

What are the undocumented features and limitations of the Windows FINDSTR command?

关于regex - 包含制表符的 findstr 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40239518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com