Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5740944
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类:

2006-06-04 12:41:18

学习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的查找项竟然是空,以前的时候都没有遇见过这种情况;
后来才知道是
查找项为空就表示使用前一个模式,在这里也就是作为地址的那个正则表达式。

看来要好好补习一下了~~
阅读(1045) | 评论(0) | 转发(0) |
0

上一篇:tr命令

下一篇:补一个cut命令的帖子

给主人留下些什么吧!~~