从传入的数据包sed子串

string我想sed我从传入的sniffered数据包中得到…我想从string中获取子stringfe

INVITE sip:18455845013@192.168.192.253:5060 SIP/2.0 

使用sed我想提取子string。
Substring介于sip:@之间…所以对于我的例子,我需要得到

 18455845013 

输入文件

 $ cat foo.txt INVITE sip:18455845013@192.168.192.253:5060 SIP/2.0 

结果

 $ sed 'y/:@/\r\n/;P;d' foo.txt 18455845013 
  • 更改为\r
  • @改为\n
  • 打印到第一个换行符
  • 删除模式空间

如果您的grep支持-P标志,请尝试:

 grep -oP '(?<=sip:)[^@]*' 

结果:

 18455845013 

否则,像史蒂文·潘尼一样使用sed 。 HTH。

保持:和@之间的位。

 sed 's/.*:\(.*\)@.*/\1/' 

例:

 $ echo "INVITE sip:18455845013@192.168.192.253:5060 SIP/2.0" | sed 's/.*:\(.*\)@.*/\1/' 18455845013