文本过滤之IP地址精准过滤
在写之前自己整理了一点自己平时老是搞混的东西,最基础的就不写了,前面的东西不想看得一眼代过,就当借着做IP过滤顺便整理下常用的,看看后面如何精准锁定IP地址吧。
一、正则表达式(PATRERN) 括号() 方括号[] 尖括号<> 大括号{} 的使用
\[\] 匹配指定范围内的任意单个字符
[^] 用于匹配指定对象之外的任意单个字符
^[] 用于匹配指定对象并且在行首的任意单个字符
\(\) 用作后向引用,也可以用于限定或(\|)的作用域
\1 引用第一个左括号及其与之对应的右括号所包含的所有内容
\2 同理
\3 同理
\< 其后面的任意字符必须作为单词的首部出现
\> 其前面的任意字符必须作为单词的尾部出现
\<root\> 单词root必须单独作为单词
\{\} 用于匹配次数
\{m,n\} 匹配其前字符至少m次,至多n次
例:数字开头数字结尾
grep ‘\([0-9]\).*\1$‘ /etc/inittab
用于匹配某一类的任意单个字符 [[:digit:]],[[:lower:]],[[:upper:]],[[:punct:]],[[:space:]],[[:alpha:]],[[:alnum:]]
二、grep(全局搜索),sort(文本统计),cut(文本剪切工具),wc(文本统计),tr(字符处理命令),uniq(显示重复行,相邻+相同=重复)
grep [option] pattern [file] [file1] ...
常用 -i -v -o --color -E
-A # 显示其后#行内容
-B # 其前
-C # 其前后
例:cpu family及其后两行
grep -A 2 ‘cpu family‘ /proc/cpuinfo
sort [option] [file]
-n 数值排序
-r 降序排列
-t 字段分隔符
-k 以哪个字段为准进行排序
-f 忽略字符大小写排序
例:
sort -t: -n -k3 /etc/passwd
cut [option] [file]
-d 定义分隔符
-f 与-d一起使用,指定显示那个区域
-b 以字节为单位进行分割
-c以字符为单位进行分割
例:看看变化就知道
netstat -nut | grep ESTAB | awk ‘{print $5}‘ netstat -nut | grep ESTAB | awk ‘{print $5}‘ | cut -d: -f1
wc [option] [file]
-l 显示行数
-w 显示单词数
-c 显示字节数
tr [option]
-d 删除出现在字符集中的所有字符
例:
cat /etc/passwd | tr -d ‘a‘
uniq [option] [file]
-c 显示文件中行重复的次数
-d 只显示重复行
三、(重头戏)过滤普通IP地址和选定类型的IP地址
样本:iptest.txt
127.0.0.1s asdfdf
123.0.7.193
wo 23.2.2.3
network127.0.0.1/16 is a bad guy
193.192.168.32
172.168.100.1
普通IP:不建议使用,但是速度稍微快一点
grep ‘[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9] iptest.txt
A类IP:(B,C类同理)
grep --color ‘\<\([1-9]\|[1-9][0-9]\|1[01][0-9]\|12[0-7]\)\.\([0-9]\|[1-9][0-9]\|1[0-9][0-9]\|2[0-4][0-9]\|25[0-4]\)\.\([0-9]\|[1-9][0-9]\|1[0-9][0-9]\|2[0-4][0-9]\|25[0-4]\)\.\([0-9]\|[1-9][0-9]\|1[0-9][0-9]\|2[0-4][0-9]\|25[0-4]\)‘ iptest.txt
定有不足,差错肯请致邮:KaiXuanyin@live.com
本文出自 “我只想安静地奔跑” 博客,请务必保留此出处http://gumpping.blog.51cto.com/9811308/1680822
文本过滤之——grep,sort,wc,uniq,tr, 精准过滤IP地址,A类地址,B类地址.... 并排序
原文地址:http://gumpping.blog.51cto.com/9811308/1680822