3

我想从传入的嗅探包中获取的字符串...我想从字符串中获取子字符串,fe

INVITE sip:18455845013@192.168.192.253:5060 SIP/2.0

使用sed我想提取子字符串。
子字符串介于sip:和之间@......所以对于我的例子,我需要得到

18455845013
4

3 回答 3

1

保留 : 和 @ 之间的位。

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

例子:

$ echo "INVITE sip:18455845013@192.168.192.253:5060 SIP/2.0" | sed 's/.*:\(.*\)@.*/\1/'
18455845013
于 2013-04-12T06:52:50.827 回答
1

输入文件

$ 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
  • 打印到第一个换行符
  • 删除模式空间
于 2013-04-12T06:10:52.033 回答
1

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

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

结果:

18455845013

否则,sed就像 Steven Penny 所做的那样使用。HTH。

于 2013-04-12T06:25:12.340 回答