• ベストアンサー

正規表現で行ではなく単語のみをファイル化したい

正規表現で電話やアドレスを検索するとその行丸々表示されてしまいます。 [例]'[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+' [結果] 何々、xx@aa,bb,cc 正規表現の単語部分(何々、を除いた部分)だけを取り出すにはどうすればいいのですか お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#2補足>cygwin grep -o オプションをつけましょう

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

使用している言語はなんでしょうか?

bonbontarou
質問者

補足

cygwin grep です。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

egrep '[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+' としているんでしょうか?grep はマッチした行を表示するコマンドです。行を編集するなら別のコマンドを使います。例えば、 sed -n 's/.*\([a-zA-Z0-9_-]\+@[a-zA-Z0-9_-]\+\(\.[a-zA-Z0-9_-]\+\)\+\).*/\1/p' egrepとsedでは正規表現の仕様が違うので、egrep の ( ) + は、sed では \( \) \+ と書きます。 行に2つ以上アドレスが含まれているケースに対応するならさらに工夫が要ります。そういう場合はawkやperlを使ったほうがいいでしょうね。

関連するQ&A