完全用sed来过滤处理文本是麻烦的。特别有时想快速的获得一个结果,构造正则表达式就会用掉很多时间。比如想看看有那些ip在访问web服务器。使用
root@www:~#netstat -na46
一大堆,不可能一个一个数吧。我只想看看80端口的连接加一个grep ,这样:
root@www:~#netstat -na46 | grep 192\.168\.100\.14:80
还是很多。加一个 wc -l有重复统计。好了,我只要第5列。cut -f5 。不起作用。原来cut是按TAB分字段。没关系使用sed替换:
root@www:~#netstat -na46 | grep 192\.168\.100\.14:80 | sed 's/ \{1,\}/\t/g'
好了终于可是使用cut 了
root@www:~#netstat -na46 | grep 192\.168\.100\.14:80 | sed 's/ \{1,\}/\t/g' | cut -f 5
接下来就是排序把重复的ip过滤掉:
root@www:~#netstat -na46 | grep 192\.168\.100\.14:80 | sed 's/ \{1,\}/\t/g' | cut -f 5 | sort -u
root@www:~#netstat -na46 | grep 192\.168\.100\.14:80 | sed 's/ \{1,\}/\t/g' | cut -f 5 | sort -u | wc -l
真方便!模块化的力量,中间件的力量(管道符|难道不算一个精巧的消息中间件吗)!