我想从传入的嗅探包中获取的字符串...我想从字符串中获取子字符串,fe
INVITE sip:18455845013@192.168.192.253:5060 SIP/2.0
使用sed
我想提取子字符串。
子字符串介于sip:
和之间@
......所以对于我的例子,我需要得到
18455845013
保留 : 和 @ 之间的位。
sed 's/.*:\(.*\)@.*/\1/'
例子:
$ echo "INVITE sip:18455845013@192.168.192.253:5060 SIP/2.0" | sed 's/.*:\(.*\)@.*/\1/'
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
就像 Steven Penny 所做的那样使用。HTH。