学习sed已经有些时间了,但是那天在bbs上看到的一个脚本里面的sed语句,我竟然没有看明白,真是丢人~~~~~
[code]
[gw@OpenBSD ~]$ cat freenets.sh
#!/bin/sh
IP="[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"
#URL=""
URL=""
http_proxy=""
curl -s $URL | sed -n "/\($IP\)[ ]*\($IP\)[ ]*\($IP\)/s//\1 \2 \3/p" \
|\
awk 'BEGIN { FS = ",[ \t]*|[ \t]+" }
{ split($2, ip, "."); n = 0; for (i in ip) { n += nbits(ip[i]); }
printf("%s/%d\n", $1, n);
}
function nbits(x) { m = 8; while (x >= 1) { m -= 1; x /= 2; } return m; }
'
[/code]
获取免费ip列表的时候,sed -n "/\($IP\)[ ]*\($IP\)[ ]*\($IP\)/s//\1 \2 \3/p";
sed的查找项竟然是空,以前的时候都没有遇见过这种情况;
后来才知道是
查找项为空就表示使用前一个模式,在这里也就是作为地址的那个正则表达式。
看来要好好补习一下了~~
阅读(1056) | 评论(0) | 转发(0) |