- ベストアンサー
正規表現で行ではなく単語のみをファイル化したい
正規表現で電話やアドレスを検索するとその行丸々表示されてしまいます。 [例]'[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+' [結果] 何々、xx@aa,bb,cc 正規表現の単語部分(何々、を除いた部分)だけを取り出すにはどうすればいいのですか お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2補足>cygwin grep -o オプションをつけましょう
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
回答No.2
使用している言語はなんでしょうか?
- 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を使ったほうがいいでしょうね。
補足
cygwin grep です。