重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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

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が見つからない時は、教えて!gooで質問しましょう!