如何查找特定的文件?
- find ~ -name “application.properties” :精确查找文件
- find ~ -name “app*” :模糊查找文件
- find ~ -iname “app*”:不区分文件名大小写去查找文件
- man find : 更多关于find指令的使用说明
检索文件内容
grep
语法:grep [options] pattern file
- 全称:Global Regular Expression Print
- 作用:查找文件里符合条件的字符串
管道操作符:| 可将指令连接起来,前一个指令的输出作为后一个指令的输入,如下图:
find ~ -name “app*” 相当于 find ~ | grep “target”
使用管道注意的要点:
-
只处理前一个命令正确输出,不处理错误输出
-
右边命令必须能够接受标准输入流,否则传递过程中数据会被抛弃
-
常用来接受管道命令有:sed,awk,grep,cut,head,top,less,more,wc,join,sort,split等
常用查看日志的方式如下图:
对日志内容做统计
awk:
语法:awk [options] ‘cmd’ file
- 一次读取一行文本,按输入分隔符进行切片,切成多个组成部分
- 将切片直接保存在内建的变量中,$1,$2…($0表示行的全部)
- 支持对单个切片的判断,支持循环判断,默认分隔符为空格,如果需要使用其他分隔符使用 awk -F “,”
常用方式:
- awk ‘{print $1,$4}’ netstat.txt 打印出此文件的第1列和第4列
- awk ‘$1==“tcp” && $2==1 {pring $0}’ netstat.txt 打印出第一列为tcp 并且 第二列为1的行
- awk ‘{enginearr[$1]++}END{for(i in enginearr) print i “\t” enginearr[i]}’ 统计出现的次数
批量替换文本内容
sed:
语法:sed [option] ‘sed command’ filename
- 全名stream editor,流编辑器
- 适合用于对文本的行内容进行处理
常用方式:
- sed -i ‘s/^Str/String/’ replace.java 替换Str开头的 Str替换为String
- sed -i ‘s/.$/;/’ replace.java 替换.结尾的 .替换为;
- sed -i ‘s/Jack/me/g’ replace.java Jack成me,g标识全局替换,不加,只会替换每行的第一个