1

如何使用 Microsoft findstr 从单行“grep”一个项目?

我有一条线是这样的:

<config>test</config><item>some data</item><date>2007-11-02</date><datestart>2007-10-31</datestart><path>d:\test\test\test.txt</path>

现在,如果我想 grep 里面的内容,<date></date>将如何编写该正则表达式?

需要注意的一点是,我必须将 findstr 命令放入 for 循环中,以便 grep 日期并将其存储在变量中。

例子:

for /f "Tokens=* Delims=" %%i in ('findstr /r /c:"regex" file.txt') do (
    set date=%%i
    set date=!date:-=!
)

另外,我不想依赖令牌,因为它们可能会有所不同。

4

2 回答 2

1

我们可能会使用一个技巧来做你想做的事情:在读取变量中的行之后,通过不在行中的分隔符进行更改<date></date>例如,$);然后,只需使用 afor /F "tokens=2 delims=$"来获取里面的内容。

set /P the_line=< file.txt
set the_line=!the_line:^<date^>=$!
set the_line=!the_line:^</date^>=$!
for /F "tokens=2 delims=$" %%i in ("!the_line!") do set date=%%i
set date=%date:-=%
于 2011-11-10T00:57:16.540 回答
0

您可以使用"[0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9]"与您的日期匹配的正则表达式。

于 2011-11-09T14:40:23.597 回答