0

我有一个文件,我需要在其中提取以“x”开头的行,该行仅以非负数为后缀,仅此而已。例如,从以下几行:

x10
x111 116
x437 444
x2095
x2103 2104
x111
x2451 2506
x20
x10
x40 50
x57 58
x76

我需要提取这些:

x10
x2095
x111
x20
x10
x76

看起来很简单,但以下正则表达式对我不起作用,我不知道为什么:

FINDSTR /R /C:"^x[0-9][0-9]*$" file.txt

我做错了还是 FINDSTR 中的另一个怪癖?

4

3 回答 3

3

findstr /R "^x[0-9][0-9]*$" file.txt

/C开关用于文字搜索字符串。

编辑:还请注意,file.txt 的末尾必须有一个换行符(在“x76”之后),否则 findstr 不会拾取该行,因为它与“行尾”的“$”不匹配。

于 2013-10-15T17:54:25.263 回答
1

/C:string 使用指定的字符串作为文字搜索字符串。你需要跑

FINDSTR /R "^x[0-9][0-9]*$" file.txt
于 2013-10-15T17:56:21.827 回答
0

D'oh, /C 开关似乎不是原因。问题中给出的命令行实际上有效,至少对于我提供的输入。我刚刚在 Windows 7 x64 上至少成功启动过一次。另一次,它失败了(命令没有返回输出)。

很抱歉我过早地赞成你的答案......两个类似的回复让我确信 /C 选项是错误的......

编辑:我终于找到了:输入文件来自一个工具,该工具正在添加带有类似 Windows 的换行符的行。在生成文件时,它调用了外部 cygwin 工具,该工具正在写入同一个文件,但带有类似 Unix 的换行符。这就是为什么 FINDSTR 给出了与该文件不一致的结果以及与它应该匹配的所有行不匹配的“$”正则表达式。

于 2013-10-15T18:39:15.610 回答