使用Sed将括号(和内容)替换为句点
我有DNS日志,其域名采用这种格式(3)www(6)google(3)com(0)。我需要的是www.google.com。此Sed命令将用句点替换括号和内容使用Sed将括号(和内容)替换为句点,sed,Sed,我有DNS日志,其域名采用这种格式(3)www(6)google(3)com(0)。我需要的是www.google.com。此Sed命令将用句点替换括号和内容 s/([0-9])/./g .www.google.com. 现在我需要删除前导和尾随句点。幸运的是,尾随周期在这行的末尾,所以我可以用它来删除它 s/.$//g .www.google.com 有没有一种方法可以在不影响任何其他时段的情况下删除前导时段?不幸的是,提前期不在行首。一行如下所示: 10/09/2013 08:1
s/([0-9])/./g
.www.google.com.
现在我需要删除前导和尾随句点。幸运的是,尾随周期在这行的末尾,所以我可以用它来删除它
s/.$//g
.www.google.com
有没有一种方法可以在不影响任何其他时段的情况下删除前导时段?不幸的是,提前期不在行首。一行如下所示:
10/09/2013 08:15:57 0B58 PACKET 000000000ED9F540 UDP Rcv 10.35.83.5 c664 Q [0001 D NOERROR] A (3)crl(9)microsoft(3)com(0)
有更好的方法吗?首先用空字符串替换第一次出现的
([0-9])
sed s/([0-9])// ## no /g at the end!
现在像前面一样执行sed s/([0-9])/./g
和sed s/$///g
。这将起作用,因为您已经假设所有的([0-9])
只出现在url中
为清晰起见,您可以将这些sed
操作组合在一起,如:
sed 's/([0-9])//' -e 's/([0-9])/./g' -e 's/.$//g' <filename>
sed's/([0-9])//'-e's/([0-9])///g'-e's/$///g'
使用sed,您可以通过给出一个数字来指定要替换的匹配项。因此,您可以使用:
sed -e 's/([[:digit:]])/./g' -e 's/\.$//' -e 's/\.//4'
这假设日志中的行是可预测的,足以确保要删除的点是IP地址后面的第一个点