SED bash脚本帮助

SED bash脚本帮助,bash,sed,grep,command-line-interface,Bash,Sed,Grep,Command Line Interface,我正在努力追随我的朋友(全部1522人) a从他的twitter页面上得到了一个文本文件,我只想看到以@开头的一行的最后一个字 例如: 播客、广播员和技术专家。首映式广播里的技术员 网络。在Live.twit.tv上直播我的链接提要,请关注@links\u For\u twit (换行以删除讨厌的水平滚动条。) 我希望它变成twit的@links\u使用awk代替: awk '$NF ~ /^@/ {print $NF}' 改用awk: awk '$NF ~ /^@/ {print $N

我正在努力追随我的朋友(全部1522人)

a从他的twitter页面上得到了一个文本文件,我只想看到以
@
开头的一行的最后一个字

例如:

播客、广播员和技术专家。首映式广播里的技术员
网络。在Live.twit.tv上直播我的链接提要,请关注@links\u For\u twit
(换行以删除讨厌的水平滚动条。)

我希望它变成twit的
@links\u

使用awk代替:

 awk '$NF ~ /^@/ {print $NF}'
改用awk:

 awk '$NF ~ /^@/ {print $NF}'
你是说,比如:

grep -o '@[a-zA-Z_0-9]*$' tweets.txt
你的意思是,像:

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

如果要使用sed,请尝试以下方法:

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

-n
:除非要求,否则不要打印任何内容

s/*\(@.*\)
:捕获行中最后一个“@”之后的所有内容

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

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

希望有帮助


编辑:我刚刚看到下面关于电子邮件地址的投诉。您可以在@之前添加
\s
以确保有空格:
sed-n的s/*\s(@.*\)/\1/p'
如果您想使用sed,请尝试以下操作:

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

-n
:除非要求,否则不要打印任何内容

s/*\(@.*\)
:捕获行中最后一个“@”之后的所有内容

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

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

希望有帮助


编辑:我刚刚看到下面关于电子邮件地址的投诉。您可以在@之前添加
\s
以确保有空格:
sed-n的s/*\s(@.*\)/\1/p'
如果您有GNU grep,您可以使用Perl风格的正则表达式来确保
@
位于单词的开头:

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

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

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

grep-Po'(?如果在最后一个单词中嵌入了@,那么这将不起作用。例如,“user@domain.com“@Swiss:
不在character类中。只有当Twitter只允许使用非常无聊的用户名时,这才有效。虽然很简单,
grep-o
是一个需要提醒的有用工具。:)@ruakh:在匹配嵌入的@符号方面仍然存在问题。类似于
grep-o'\s*@\w*$”
的东西可能会起作用,但是你会包括空格。我不确定是否有一个干净的方法来处理grep。@sarnold:我在谷歌上发现“你只能在Twitter用户名中使用的字符”是大写字母和小写字母、数字和下划线字符(904;)”,这就是我要说的。(但我不确定Twitter是否支持非ASCII用户名。显然,我的模式不支持Unicode;我不知道是否需要)。如果最后一个字中嵌入了@,这将不起作用。例如,"user@domain.com“@Swiss:
不在character类中。只有当Twitter只允许使用非常无聊的用户名时,这才有效。虽然很简单,
grep-o
是一个需要提醒的有用工具。:)@ruakh:在匹配嵌入的@符号方面仍然存在问题。类似于
grep-o'\s*@\w*$”
的东西可能会起作用,但是你会包括空格。我不确定是否有一个干净的方法来处理grep。@sarnold:我在谷歌上发现“你只能在Twitter用户名中使用的字符”是大写和小写字母、数字和下划线字符(835;)”,所以我选择了这些字符(不过我不确定Twitter是否支持非ASCII用户名。显然,我的模式不支持Unicode;我不知道是否需要)