您的位置:首页 > 其它

文本过滤之――grep,sort,wc,uniq,tr, 精准过滤IP地址,A类地址,B类地址.... 并排序

2015-08-01 16:02 309 查看
文本过滤之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(文本统计),[b]cut(文本剪切工具),wc(文本统计),tr(字符处理命令),uniq(显示重复行,相邻+相同=重复)[/b] 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: