2

大量のゴミに囲まれた電子メール アドレスを含むテキスト ファイルがあります。メール アドレスだけを区切って、各アドレスを 1 行に 1 つずつ (またはコンマで区切って) 記述する必要があります。

テキストファイルは次のようになります。

per@netvision.net に連絡してください。מככז האולפן 99; דפני אלפר; 說明; (eina@gmail.com) אינה דגן 9303; (ori@gmail.com) メール 9406; 9304 オランダ語

[AZ] で始まり [AZ] で終わるすべての単語を "キャッチ" すると思います。

このスクリプトの書き方を教えてもらえますか?

4

1 に答える 1

3

私はこれを使用して行いgrep -oます。正確にはtcshに「含まれている」わけではありませんが、任意のスクリプトからgrepを使用できます。この-oオプションにより、grepは正規表現に一致するテキストのみを返します。

入力ファイルは現在、セミコロンを使用してレコードを区切りているように見えます。grep行ごとに読み取るため、これは重要です。そのため、レコードセパレータを改行に置き換えて、各レコードtrが確実に表示されるようにします。grep

ghoti@pc> cat strip_email 
#!/bin/tcsh

setenv inputfile emails.txt
setenv re_email '[[:alnum:]][[:alnum:]_%=+-]*@([[:alnum:]]([[:alnum:]-])+\.)+[[:alnum:]]{2,}'

tr ';' '\n' < $inputfile | grep -Eo "$re_email"

ghoti@pc> ./strip_email 
per@netvision.net
eina@gmail.com
ori@gmail.com
ghoti@pc> 

正規表現を自分に合ったものに適合させることができます。UNIXまたはLinuxシステムでは、マニュアルページre_format(7)またはregex(7)ドキュメントを確認できます。作品はそこ[:alnum:]に文書化されているだけでなく、isalnum

于 2012-08-02T18:55:34.283 に答える