SED bash脚本协助

时间:2012-02-10 00:37:55

标签: bash sed grep command-line-interface

我想跟随我的朋友关注的人(全部1,522人)

并从他的推特页面获得了一个文本文件,我想看到以@开头的一行的最后一个单词。

示例:

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

4 个答案:

答案 0 :(得分:2)

改用awk:

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

答案 1 :(得分:1)

你的意思是,像:

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

答案 2 :(得分:1)

如果你想使用sed,试试这个:

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

-n:除非被要求

,否则不要打印任何内容

s/.*\(@.*\):捕获行

中最后一个'@'后的所有内容

/\1/:用捕获的位替换整行

p:如果进行了替换则打印

希望有所帮助

编辑:我刚刚看到有关电子邮件地址的投诉。您可以在@之前添加\s以确保有空格:sed -n 's/.*\s(@.*\)/\1/p'

答案 3 :(得分:0)

如果您有GNU grep,可以使用Perl风格的正则表达式来确保@位于单词的开头:

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