来自传入数据包的sed子串

时间:2013-04-12 06:04:30

标签: regex linux sed

字符串我想要从传入的sniffered数据包中获取...我想从字符串中获取子字符串,f.e。

INVITE sip:18455845013@192.168.192.253:5060 SIP/2.0

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

18455845013

3 个答案:

答案 0 :(得分: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
  • 打印到第一个换行符
  • 删除模式空间

答案 1 :(得分:1)

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

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

结果:

18455845013

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

答案 2 :(得分:1)

保持位于:和@。

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

示例:

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