我怎样才能在句子中使用类似Twitter的名字呢?

时间:2014-09-22 08:01:45

标签: linux grep

Halo '@widi' '@diah' how are you?
What the perfect rain '@James' '@diah'..

我有两个句子,并且只想在 @ 符号后面但仍在同一行中的单词。我怎么能在Linux中做到这一点?

3 个答案:

答案 0 :(得分:1)

如果你的grep支持-P,那么你可以使用它,

grep -oP '@\K\w+' file

如果@也在最终结果中,请删除上述模式中的@

grep -oP '@\w+' file 

尝试使用以下命令删除重复的名称

grep -oP '@\K\w+' file | sort -u

答案 1 :(得分:0)

使用Ruby扫描模式

举个例子:

  

Halo' @ widi' ' @ diah'你好吗?   什么是完美的雨' @James' ' @ diah' ..

您可以像使用grep或perl一样使用Ruby的String#scan方法作为单行方法。例如:

$ ruby -ne 'puts $_.scan /@\w+/' /tmp/corpus 
@widi
@diah
@James
@diah

答案 2 :(得分:0)

由于其他答案似乎不适合你,可以考虑awk这样:

awk -F\' '/@/{x="";for(i=1;i<=NF;i++){if(substr($i,1,1)=="@"){if(length(x))x=x ",";x=x substr($i,2)}};print x}' file

<强>输出

widi,diah
James,diah