我正在使用SIPP服务器模拟器来验证传入的呼叫。我需要验证的是呼叫者ID和拨打的数字。我已将此信息记录到文件中,该文件现在包含例如以下内容:
From: <sip:972526134661@server>;tag=60=.To: <sip:972526134662@server>}
在每一行中。
我想要将其修改为仅包含两个电话号码的csv文件,如下所示:
972526134661,972526134662
等等。
我已经尝试过使用awk -F
命令,但是后来我只能将sip:
用作分隔符或将用作@
或/
分隔符。
而基本上,我想要做的是获取所有以a开头和以<
结束>
的字符串,然后获取所有在sip:
定界符之后的字符串。
使用该cut
命令也不是一种选择,因为我知道它不能使用字符串作为分隔符。
我想这应该真的很简单,但是我找不到合适的东西来使用。。非常感谢您的帮助,谢谢!
好吧,很有趣,选择一些随机数据(来自您的原始帖子)并按awk -F
您的原意使用。
请注意,由于您的文件是“生成”的,因此我们可以假设数据采用常规格式,而不希望“短”模式会导致误点击。
[g]awk -F'sip:|@' -v OFS="," '{print $2,$4}' yourlogfile
通过交替运算符,它同时使用sip:
和@
作为字段分隔符 |
。如果需要,可以轻松扩展它以允许其他字符或字符串也用于分隔输入中的字段。内置变量FS可以包含这样的正则表达式/ regexp。
对于您问题中的第一个样本,它得出以下结果:
972526134661,972526134662
对于最新版本(修订版8),并猜测您想要的是什么:
[g]awk -F'sip:|@|to_number:' -v OFS="," '{print $2,$5}' yourlogfile
产生此:
from_number,972526134662
[g] awk是因为我在计算机上使用了gawk,并且与awk表现出相同的行为。
@fedorqui建议使用样式稍作修改,以使用命令行选项-v来设置输出字段分隔符(AWK内置变量,可以像其他变量一样使用-v进行修改的AWK内置变量)的值,并分隔用逗号打印字段,以便将它们在输出中视为字段,而不是使用硬编码的“,”构建字符串并将其视为一个字段。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句