Halo '@widi' '@diah' how are you?
What the perfect rain '@James' '@diah'..
我有两个句子,并且只想在 @ 符号后面但仍在同一行中的单词。我怎么能在Linux中做到这一点?
答案 0 :(得分:1)
如果你的grep支持-P
,那么你可以使用它,
grep -oP '@\K\w+' file
如果@
也在最终结果中,请删除上述模式中的@
。
grep -oP '@\w+' file
尝试使用以下命令删除重复的名称
grep -oP '@\K\w+' file | sort -u
答案 1 :(得分:0)
举个例子:
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