はじめに
batのfindstrを使って正規表現で、特定の条件下のデータだけ、抽出というもの。
備忘として記事に残しておこうと思う。(だいぶ悩んだ・・・)
こんな感じ
通常バージョン
findstrはこんな感じで使っていた
for /f "tokens=1-10* delims=," %%a in (%file_path%) do (
@echo %%a|findstr /r /c:"正規表現" > nul
)
and条件
条件としては、
正規表現A
かつ
正規表現B
の条件に合致するもの。
for /f "tokens=1-10* delims=," %%a in (%file_path%) do (
echo %%a | findstr /r /c:"正規表現A" > nul && echo %%a | findstr /r /c:"正規表現B" > nul
)
or条件
条件としては、
正規表現A
または、
正規表現B
の条件に合致するもの。
「||」はエラーレベルが0以外の場合に、後続のコマンドが実行されるというものです。
正規表現Aかつ正規表現Bの正規表現で見つからなかった場合、(ここで見つからなかった場合エラーレベルで「1」が返される。見つかった場合には「0」)
後続のset flg=trueのコマンドが実行される。というものです。
for /f "tokens=1-10* delims=," %%a in (%file_path%) do (
@echo %%a|findstr /r /c:"正規表現A" > nul || set flg=true
@echo %%a|findstr /r /c:"正規表現B" > nul || set flg=true
if flg==true echo どちらかの条件に一致
終わりに
batのfindstrの正規表現は使える正規表現の種類が少なくて参っちまうぜ・・・。
(PythonとかPowerShellでいいじゃん!とは、思っていたり思っていなかったり・・・笑)
普通ならもっと短くかけるのに~
短いですが、ほいじゃ
参考