2012-02-10 8 views
1

私は私の友人は(それらのすべて1522)SEDのbashスクリプト援助

と彼のTwitterページからとなったテキストファイル、次のされ方従うことをしようとしていると私はちょうど最後の単語を見てみたいです@で始まる行。

例:

Podcaster, broadcaster and tech pundit. The Tech Guy on the Premiere Radio 
    Networks. Live at live.twit.tv For my link feed follow @links_for_twit 

(。ラインラップ憎しみ水平スクロールバーを削除する)

私は@links_for_twitに変身します。

代わり

答えて

2

利用のawk:

awk '$NF ~ /^@/ {print $NF}' 
1

あなたが好きな、意味:

grep -o '@[a-zA-Z_0-9]*$' tweets.txt 

?あなたはsedを使用することを希望している場合は

+0

最後の単語に@が埋め込まれている場合、これは機能しません。たとえば、 "[email protected]" – Swiss

+0

@Swiss: '.'は文字クラスにありません。 – ruakh

+0

これは、Twitterがかなり退屈なユーザー名しか許可しない場合にのみ機能します。シンプルですが、 'grep -o'は思い出される便利なツールです。 :) – sarnold

1

、これを試してみてください。

sed -n 's/.*\(@.*\)/\1/p'

-n

s/.*\(@.*\)を頼まない限り、何も印刷されません。最後の後にすべてのものをキャプチャ '@' でライン

/\1/:キャプチャされたビットでライン全体を置き換えます。

p:私はちょうど電子メールアドレスについて以下の苦情を見ました:置換が

EDIT役立ちます

希望なされた場合に印刷します。あなたは、スペースがあるのを確認するためにだけ、@の前に\sを追加することができます。sed -n 's/.*\s(@.*\)/\1/p'

0

あなたがGNUのgrepのを持っている場合、あなたは@は単語の先頭であることを確認するためのPerl風味の正規表現を使用することができます。

grep -Po '(?<=^|\s)@\w+' filename