1

Microsoft findstr を使用して、1 行からアイテムを "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>どのように記述しますか?

注意すべきことの 1 つは、日付を grep して変数に格納するために、findstr コマンドを for ループに入れる必要があることです。

例:

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

また、トークンは異なる可能性があるため、トークンに依存したくありません。

4

2 に答える 2

1

必要なことを行うためにトリックを使用する場合があります。変数の行を読み取った後、行にない区切り文字 (たとえば、)で変更<date>します。次に、 a を使用して内容を取得します。</date>$for /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 に答える