2016-10-25 35 views
0

私はgrepの代わりにfindstrをbarebones vanilla windowsボックス(悲しいことですが)に使用しようとしています。比較的大きなファイル(1Gb +)があり、タブで区切られたMX,MXnnBR、およびBRnnが含まれていない行を抽出したいと思います。私が '本当の'正規表現を書いていたら、タブ文字を含むfindstrクエリ

\t(MX|BR)(..)?\t 

となります。私は2段階でやっても構いませんが、私の人生にはデリミタタブを含めることはできません。

これまでのところ、私が持っている:

によるデータの性質にOKっぽい仕事をしていませんが、私は本当にむしろのようなもの使用することになり
findstr /V MX source.txt >> temp.txt 
findstr /V BR temp.txt >> dest.txt 

:私はしました

findstr /R /V "\t(MX|BR)(..)?\t" source.txt >> dest.txt 

をダブルスラッシュ、escape sequencesなどを試しましたが、サークル内を走っているようです。

私が助けることができれば、私はVBScriptに頼るのが嫌です。

バニラ窓にはどのような考えがありますか?


EDIT

私は/ Gオプションを使用して、除外ファイルを生成するに見てきたが、発電は可能性へのユーザーの綿たら、問題になることを始めるかもしれない - 正規表現だけだろうlotが簡単です。

答えて

1

コマンドラインまたはバッチファイル内の可能な解決策は、使用している:

%SystemRoot%\System32\findstr.exe /V /R /C:"\<BR[0-9]*\>" /C:"\<MX[0-9]*\>" "source.txt" 

source.txtが検索されるファイル大文字と小文字を区別0または有するための/VいずれかBRを含む行ないためをより多くの数字またはMX\<および\>のために、0またはそれ以上の数字が1つの単語である/R 2つの正規表現検索用語\<BR[0-9]*\>および\<MX[0-9]*\>は、論理ORと組み合わせてFINDSTRとなります。

これは、すでにsource.txtをフィルタリングするのに十分な場合があります。しかし、BR[0-9]*またはMX[0-9]*を含む行も、水平タブ文字以外の単語区切り文字で囲まれています。角括弧の4対のそれぞれの間にバッチファイルで1つの水平タブ文字がなければなりません:

バッチファイルで使用することが可能である:

%SystemRoot%\System32\findstr.exe /V /R /C:"[ ]BR[0-9]*[ ]" /C:"[ ]MX[0-9]*[ ]" "source.txt" 

ATTENTION。ブラウザは、HTML仕様に従って、これらの4つのタブ文字を1つ以上のスペースとして表示します。

FINDSTRの詳細については、コマンドプロンプトウィンドウを開き、findstr /?を実行してください。

は、おそらくまた、スタックオーバーフローの記事を読んで

What are the undocumented features and limitations of the Windows FINDSTR command?

関連する問題