コスパ重視で生きたい人生だった

なるべく楽して生きて行きたい30代サラリーマンのブログ

コマンドプロンプトで特定の単語を含む行を抜き出す方法(grepもどき)


あるcsvデータやtxtデータがあって、特定の単語を含む行だけ抜き出したい時ってありますよね。
これがLinuxならgrepでちょちょいのちょいなんですが、Windowsではgrepがない・・・
そんなときはこの方法で!


●コマンドプロンプト(Windows)版のgrepとも言うべき、findコマンド

findコマンド、使い方は簡単。
探したい単語と探したい対象ファイルを指定するだけ。
このときの注意点は、単語を""(ダブルクォーテーション)で囲うのを忘れないことです。

find "探したい単語" 対象ファイル.csv

ね、簡単でしょ?

これを応用すれば、現在いるフォルダの全てのcsvファイルから、特定の単語を含む行だけを抜き出したファイルを作成するというのも簡単です。
このときのポイントは、出力ファイルの拡張子をcsv以外にすること。
そうしないと、出力ファイルの中まで検索されてしまいます。
拡張子は必要に応じて、findコマンド終了後に手で変えましょう。

find "探したい単語" *.csv > 出力結果.txt



●更なる応用 「単語をリストで指定する」

更なる応用として、検索したい単語をリストで指定する方法のサンプルを。
まずは、単語の一覧をテキストファイル(リスト.txt)に改行区切りで作成します。
こんな感じ。

りんご
くり
みかん

あとは、forコマンドを利用して

for /F %i in ( リスト.txt ) do find "%i" *.csv > %i.txt

これで、りんご.txtにはりんごを含む行が、くり.txtにはくりを含む行がそれぞれ出力されます。
便利!

ただ、このコマンドはちょっと遅いです。grepを想像してるとその遅さに愕然。
grepを使える環境であれば、たぶんそっちを使うのがよいかも、と思ったり思わなかったり。

そんじゃまた。

Windowsコマンド辞典―Windows7対応 (Pocket詳解)

Windowsコマンド辞典―Windows7対応 (Pocket詳解)