nginx如何截取url部分字符并替换,求助
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx如何截取url部分字符并替换,求助相关的知识,希望对你有一定的参考价值。
参考技术A String.prototype.getQuery = function(name)var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = this.substr(this.indexOf("\?")+1).match(reg);
if (r!=null) return unescape(r[2]); return null;
var s = "web1.aspx?status=item&mode=edit";
alert(s.getQuery("status"));
alert(s.getQuery("mode"));
String.prototype.getQuery = function(name)
的意思是为String对象增加一个getQuery(name)方法.本回答被提问者采纳
linux如何截取指定字符串行前后N行的数据
有如下数据,是显示系统连接信息的字符串,现在要统计每个ip的链接字节数,例如,截取所有src=192.168.1.5,的字节数,并相加。
我的思路是:先grep找到"192.168.1.5"往下数2行,截取其数字部分,并循环依次相加,但这shell代码怎么写?
注意,是用shell写,C语言我会
1 table: 0x767160
layer3 ipv4
type 8
layer4 icmp
code 0
id 19
src 192.168.1.5
packets 34123
bytes 2047380
dst 218.16.118.54
2 table: 0x767750
bytes 62
src 192.168.1.5
sport 54675
layer4 udp
dst 192.168.1.1
dport 53
layer3 ipv4
packets 1
…………………………
补充:字符串里面有很多个ip的信息,我只需要一个。不能简单匹配 所有bytes行
有道理,icmp和其他协议的显示格式不同,能不能这样:
根据table为标识符,分割字符串,若在每段中出现"src+任意空格+192.168.1.5",就查找当前分段里的bytes后面的数字
试了一下,这个可以:
$ gawk -v RS='table:' '/src\\s+192.168.1.5/num+=gensub(/.*bytes\\s+([0-9]+).*/,"\\\\1","a") ENDprint num' 1.txt
结果2047442
192.168.1.5可能出现在src和dst,只需要找,匹配src+任意个空格+192.168.1.5,怎么改?
追答src[^0-9]*192\.168\.1\.5
追问你试过了么?不行啊,按照我上面的数据和你的代码,应该能打印出2047380,结果是0
楼下提醒了,发现icmp和其他协议的显示格式不同,能不能这样:
根据table为标识符,分割字符串,若在每段中出现"src+任意空格+192.168.1.5",就查找当前分段里的bytes后面的数字,并统计相加
不需要改,首先找到 匹配src+任意个空格+192.168.1.5 ,然后找 往下数2行,
如何下数2行里面没有 bytes 字符,就不会获取,直接跳过,
继续找下一个,然后找 往下数2行。。。
cat data.txt|awk 'BEGINsum=0if(/src[^0-9]*192\\.168\\.1\\.5/)getline;getline;match($0,/bytes[^0-9]*([0-9]*).*/,r);if(r[1])sum=sum + r[1]ENDprint sum'以上是关于nginx如何截取url部分字符并替换,求助的主要内容,如果未能解决你的问题,请参考以下文章