gpt4 book ai didi

windows - 管道 findstr 的输出

转载 作者:可可西里 更新时间:2023-11-01 11:22:29 31 4
gpt4 key购买 nike

Windows 命令行,我想在文件中搜索以以下开头的所有行:

# NNN "<file>.inc"

哪里NNN是一个数字,<file>任何字符串。

我想使用 findstr,因为我不能要求脚本的用户安装 ack。

这是我想出的表达方式:

>findstr /r /c:"^# [0-9][0-9]* \"[a-zA-Z0-9_]*.inc" all_pre.txt

要搜索的文件是all_pre.txt .

到目前为止一切顺利。现在我想将它传递给另一个命令,例如 more .

>findstr /r /c:"^# [0-9][0-9]* \"[a-zA-Z0-9]*.inc" all_pre.txt | more

此结果与上一个命令的输出相同,但每行的文件名作为前缀 (all_pre.txt)。

然后是:

FINDSTR: cannot open |
FINDSTR: cannot open more

为什么管道不工作?


all_pre.txt 内容的截图

# 1 "main.ss"
# 7 "main.ss"
# 11 "main.ss"
# 52 "main.ss"
# 1 "Build_flags.inc"
# 7 "Build_flags.inc"
# 11 "Build_flags.inc"
# 20 "Build_flags.inc"
# 45 "Build_flags.inc(function a called from b)"

编辑:我还需要转义正则表达式中的点。不是问题,但值得一提。

>findstr /r /c:"^# [0-9][0-9]* \"[a-zA-Z0-9_]*\.inc" all_pre.txt

在 Frank Bollack 之后编辑:

>findstr /r /c:"^# [0-9][0-9]* \"[a-zA-Z0-9_]*\.inc.*" all_pre.txt | more

不工作,尽管(我认为)它应该查找与之前相同的字符串,然后查找任何字符多次。那必须包括 " ,对吧?

最佳答案

您的搜索模式中缺少尾随 \"

findstr /r /c:"^# [0-9][0-9]* \"[a-zA-Z0-9]*.inc\"" all_pre.txt | more

以上对我有用。

编辑:

findstr /r /c:"^# [0-9][0-9]* \"[a-zA-Z0-9]*\.inc.*\"" all_pre.txt | more

这个更新后的搜索字符串现在将匹配您示例中的这些行:

# 1 "Build_flags.inc"
# 7 "Build_flags.inc"
# 11 "Build_flags.inc"
# 20 "Build_flags.inc"
# 45 "Build_flags.inc(function a called from b)"

编辑:

要避免 findstr 中的这个“错误”,您可以像这样将搜索放入批处理文件中:

@findstr /r /c:"^# [0-9][0-9]* \"[a-zA-Z0-9_]*\.inc" %1

将其命名为 myfindstr.bat 并这样调用它:

myfinsdtr all_pre.txt | more

您现在可以像往常一样使用管道和重定向运算符。

希望对您有所帮助。

关于windows - 管道 findstr 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2737107/

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