1. grep
比如,我要查看www目录下所有包含 “聊天室” 的文件
grep -rn "聊天室" *
比如我要把 www 目录下所有文件中的 聊天室 替换为 哈哈哈
grep -rl 聊天室 ./ | xargs sed -i "s/聊天室/哈哈哈/g"
结果我就不贴了
2. vim文本内容替换
命令::s/from/to/g (将当前行中所有from替换成to) , 加上c,如::s/from/to/gc (将当前行中所有from替换成to,但每次替换前都会询问用户确认此操作)
3.awk (一般用来做统计)
场景:awk统计日志中相同IP的访问次数
基本结构:awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file
日志格式: 180.153.114.199 - - [03/Jul/2013:14:44:43 +0800] GET /wp-login.php?redirect_to=http%3A%2F%2Fdemo.catjia.com%2Fwp-admin%2Fplugin-install.php%3Ftab%3Dsearch%26s%3DVasiliki%26plugin-search-input%3D%25E6%2590%259C%25E7%25B4%25A2%25E6%258F%2592%25E4%25BB%25B6&reauth=1 HTTP/1.1 200 2355 - Mozilla/4.0 - 实现命令:awk '{a[$1]+=1;}END{for(i in a){print a[i]" " i;}}' log_url(日志路径) 命令:awk '{a[$1]+=1;}END{for(i in a){print a[i]" " i;}}' log_url(日志路径)
结果实例:
2 101.226.33.200
2 101.226.66.175 排序:awk '{a[$1]+=1;}END{for(i in a){print a[i]" " i;}}' log_url(日志路径) | sort (加上sort就行,如果需要倒叙,加上 -r 参数,默认按第一个字符排,所以再加上 -g) 最终结果:
200 180.153.206.34
40 180.153.114.199
10 113.110.176.131 场景:awk统计访问日志前十的IP
日志格式:2013-10-29 10:26:09, INFO, send toEmail=wuas6662@163.com,templateId=23,titleId=11,type=3,sendEmail=noreply+renrenzhichang@mail.xiaozhao.com,ip=10.3.22.134,mailType=4,emailId=526f1bd8c8f2a90213662a67
命令:cat mail-2013-10-28.log | awk -F ',' '{print $8}' | sort | uniq -c | sort -k1nr | head -10
4.sed
应用场景:字符串替换
命令:sed 's/stringa1/stringa2/g' example.txt
说明:将example.txt文件中的 "string1" 替换成 "string2" 应用场景:文件中删除所有空白行
命令:sed '/^$/d' example.txt 从example.txt 应用场景:从example.txt文件中删除所有注释和空白行
命令:sed '/ *#/d; /^$/d' example.txt 应用场景:查看只包含词汇 "string1"的行
命令:sed -n '/stringa1/p'
待续