linux 日常中会用到的命令(持续更新)

时间:2021-03-26 22:04:38

1. grep

  比如,我要查看www目录下所有包含   “聊天室”  的文件

grep -rn "聊天室" *

  linux 日常中会用到的命令(持续更新)

  比如我要把  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'

待续