パターンマッチについてなんですが、このコマンドはマッチした行を出力するコマンドなんですが。実際にはパターンマッチをした文字列だけを表示したいという場合にはどのようにしたらよいのでしょうか?スクリプトを書くしかないのでしょうか?できればその例を教えてください。お願いします。

A 回答 (2件)

例を、ということなので。



Perl で、パターンマッチに ( ) を使い、$1 でそれを出力するようにすれば、マッチした文字列だけを表示させることはできます。
例えば、以下のようなスクリプトはどうでしょうか。
――――――――――
#!/usr/local/bin/perl
# Usage: grep2 pattern filename
$pattern = $ARGV[0];
$filename = $ARGV[1];
open(IN, $filename) or die("$filename: $!\n");
while (<IN>) {
  next unless /($pattern)/;
  print "$1\n";
}
close(IN);
exit(0);
――――――――――
これで、grep2 pattern filename とやれば、pattern にマッチする文字列だけがダーッと出てきます。
パターンには、正規表現も使えます。(シェルで解釈されないよう、' ' で囲む必要があります。)

でも、こんなことして、何か意味があるのでしょうか…?
行数でも一緒に表示させるようにすれば、使い道が出てくるのかな?
    • good
    • 0

grep では出来ないですね。


perl を使いましょう。マッチした文字列を抽出することが出来ます。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード


人気Q&Aランキング

おすすめ情報