一.shell 脚本
1.查找特定文件
语法:find path [option] params //path选填
- 查找当前文件夹下的文件
find -name "e*"
- 查找上一级文件夹下的文件
find ~ -name "e*"
- 不想退出当前位置,查找某个不在当前文件夹下的文件,使用全局搜索
find / -name "error.*"
补充:如果只想取文件名,只需要在语句后面加 | sed "s#.*/##"
2.检索文件内容
语法:grep [options] pattren file //查找文件里符合条件的字符串
管道操作符 | 可以将指令连接起来,前一个指令输出的正确的结果作为后一个指令的输入
- 检索某文件下包含某字段的行并输出(grep检索的内容是支持正则表达式的)
grep '[Tomcat [0-9]]' README.md
- 上一步的结果更加精确的搜索
grep '[Tomcat [0-9]]' README.md | grep -o 'https://[a-z]*.[a-z]*.[a-z]*/[a-z]*-[0-9]*' //假设查https地址
- 上一步结果过滤掉存在某些字段的行 ,例如过滤download
grep '[Tomcat [0-9]]' README.md | grep -o 'https://[a-z]*.[a-z]*.[a-z]*/[a-z]*-[0-9]*' | grep -v 'download'
3.对文件内容进行统计
语法:awk [options] 'cmd' file
- 只显示所需要的列
awk '{print $1,%4}' test.txt
- 根据行列条件显示某行
awk '$1==1 && $2=="a" {print $0}' test.txt
awk '($1==1 && $2=="a" ) || NR==2{print $0}' test.txt //NR代表的是显示第几行
- 上面的是按空格来分割的,对与特殊字符分割的操作(F "?")
awk -F "," '($1=="abcdefg" && $2=123456) || NR==2{print $0}' testawkF.txt