ビット、検索パターンを展開します。
findstr /BRC:".* .* .* .* 555 .*" in.txt >out.txt
(悲しいことに、stackoverflowのは、タブをスペースに変換パターンにはスペース、タブだけはありません。)
.
=「任意の文字*
= "ゼロ以上"
もう1つの方法:明示的に25列目を取得して比較してください:
@echo off
setlocal enabledelayedexpansion
set "line="
for /l %%a in (1,1,50) do set "line=!line!%%a "
echo %line%>t.txt
set "line="
for /l %%a in (2,1,51) do set "line=!line!%%a "
echo %line%>>t.txt
set "line="
for /l %%a in (3,1,52) do set "line=!line!%%a "
echo %line%>>t.txt
set "line="
for /l %%a in (4,1,53) do set "line=!line!%%a "
echo %line%>>t.txt
set "line="
for /l %%a in (5,1,54) do set "line=!line!%%a "
echo %line%>>t.txt
set "line="
for /l %%a in (0,1,49) do set "line=!line!%%a "
echo %line%>>t.txt
endlocal
REM above block is just to generate a testfile
for /f "delims=" %%a in (t.txt) do (
for /f "tokens=25" %%b in ("%%a") do (
echo DebugLine. Column 25 is: "%%b"
if "%%b"=="25" echo %%a
)
)
は(再び、それは、set "line=!line!%%a "
ではスペースTABません。)
注:ちょうどfindstr
最大 "トークン" より
遅い31(for
制限)*)
ですいずれかのフィールドが空の場合、これは失敗します。 (計算ミス、連続した区切り文字は1つとして扱われます)*)
特殊文字に問題があります。 *)
*)(
@ stephan。あなたの助けに感謝します。私が "。 "555"が存在するが、 "。*"はどこでも "555" present.soと混同されている。 TABを使って25フィールドまでの間に "。"を使用してください。 – sasmi
パターン内のドットはドットを表していませんが、 "任意の文字"(ワイルドカードのような)です。リテラルドットは '\ .'を使わなければなりません。また、パターンの長さには限界があります。だから、findstr(Magooの答えに触発された)に '/ b'が追加された" 25th filed " – Stephan
に問題があるかもしれません。あなたの例では問題ありませんでしたが、多くの列がある場合は違いが生じます。 – Stephan