grep,awk,sed 主要用于文本处理,编辑查找分析。。。 最近接手遗留项目,针对眼花撩乱的命名规则以及飞来飞去的方法调用,通过grep搜索方法,通过sed 规范方法名。。。

以前做DNS项目实施的时候,通过awk对DNS配置文件进行数据整理导入系统,节省运维时间,避免手动处理错误。。。 很强大的三个命令,只记录常用操作,后期补充。。。

grep 命令

grep 主要用于查找文件,是一种强大的文本搜索工具。实际上只使用 -rn 参数。。。

常用参数

-r  递归查询指定的目录
-n  现实匹配行和行号
-v  现实不包含匹配文本的行
-i  忽略字符大小写,默认区分大小写
-l  列出文件内容符合指定的范本样式的文件名称
-L  列出文件内容不符合指定的范本样式的文件名称
--color=auto  标记匹配颜色 

example:

grep `passwd` a.txt //搜索文件中包含passwd
grep `passwd` a.txt b.txt //搜索文件中包含passwd,支持添加多个文件
grep `passwd` *.txt
grep -i `Passwd` a.txt //忽略大小写
grep `^passwd` a.txt 匹配正则表达式的开始行 
grep `^passwd` a.txt  --color=auto  标记匹配颜色 
grep -rn "passwd"  /opt 递归查询目录下包含passwd的文档。并显示匹配行和行号

awk 命令

awk命令主要做数据处理。固定格式的数据将其中需要的数据重新组合。下面的例子是将原始ip库中的ip段 和所属国家地区重新组合。。。

awk -F ","  '{print $3"-"$6"-"$7}' ip.txt 

参数:

-F 指定分隔符,如果不指定 默认使用空格分隔
$0 表示整个当前行
$1 每行第一个字

原始数据:

38385,223.255.0.0,223.255.63.255,3758030848,3758047231,中国,北京,北京,电信通
38386,223.255.64.0,223.255.127.255,3758047232,3758063615,中国,北京,北京,""
38387,223.255.128.0,223.255.147.129,3758063616,3758068609,中国,香港,"",""
38388,223.255.147.131,223.255.191.255,3758068611,3758079999,中国,香港,"",""
38389,223.255.236.0,223.255.239.255,3758091264,3758092287,中国,上海,上海,""
38390,223.255.240.0,223.255.243.255,3758092288,3758093311,中国,香港,"",""
38391,223.255.252.0,223.255.253.255,3758095360,3758095871,中国,福建,"",电信

处理后数据:

223.255.0.0-223.255.63.255-中国-北京
223.255.64.0-223.255.127.255-中国-北京
223.255.128.0-223.255.147.129-中国-香港
223.255.147.131-223.255.191.255-中国-香港
223.255.236.0-223.255.239.255-中国-上海
223.255.240.0-223.255.243.255-中国-香港
223.255.252.0-223.255.253.255-中国-福建

sed 命令

sed命令理解为批量文本处理程序。

sed -i "" 's/gophper.com/www.gophper.com/g' *.go  //替换go文件中所有gophper.com为www.gophper.com,如果
sed -i "" 's#http://www.gophper.com#https://gophper.com#g' *.go //如果替换比对的字符里面包含\可以使用#作为新的分割符