我想从传入的嗅探包中获取的字符串...我想从字符串中获取子字符串,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。