プロが教える店舗&オフィスのセキュリティ対策術

grepにマッチした正規表現の文字列を取得し、マッチした文字列を
一覧で取得したいのですが、方法がわかりません。

※例
grep [0-9][0-9][0-9][0-9][0-9] 検索ファイル名 > 出力ファイル名

不明点あればお知らせください。
よろしくお願いします。

A 回答 (2件)

UnixやLinuxなら、まずは man grep してみること。


GNU版のgrepなら --help オプションでもかなり詳細な説明が見れます。

GNU grepのマニュアルより
> -o, --only-matching
> Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.

GNU grepのヘルプより
> -o, --only-matching 行の中で PATTERN に一致した部分のみ表示する

こういうことですか?
ただ、この方法はその行で最初に見付かったものだけ出力されるので、1行に複数マッチする場合には使えませんが。

POSIXのgrepには-oは無いようなので、sedかなんかで抜き出すことになります
    • good
    • 0
この回答へのお礼

-o オプションなんてものがあったんですね。
やっぱりぐぐってばかりではなく、マニュアル見るべきですね。。
想定通りの結果を得ることができました。
ご回答ありがとうございました。

お礼日時:2011/08/21 15:05

例の通りだと、マッチした行全体が出力されてしまうのが不満


ということでしょうか。であれば
grep -o [0-9][0-9][0-9][0-9][0-9] 検索ファイル名 > 出力ファイル名
でどうでしょう?
上記でダメなら補足してもらわないと、見当がつかないです。

一応、以下が当方の環境です。
cygwin 1.7.9-1
grep 2.6.3
    • good
    • 0
この回答へのお礼

お察しの通りでございます。
ご回答ありがとうございました。

お礼日時:2011/08/21 15:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!