前言
本章主要介绍shell常用的四大指令
一、介绍
1)find命令
1.1)基本用法
例
-
find . -name “test.txt” 查找当前目录下名字为test.txt的文件
-
find . -maxdepth 1 -name “test.txt” 查找第一级目录下名字为test,txt的文件
-
find . -size +20M 查找当前目录下大于20M的
-
find . - maxdepth 1 -size +50M -type f -exec mv {} /tmp/; 查找当前第一级目录大于50M的文件并移动到tmp
-
find ./ -type f -mtime +1 查1天以前的文件
-
find ./ -type f -name “*.tar.gz” -mtime +7 | xargs rm 删除七天以前的文件
1.2)Test
2)grep命令
- grep是文本过滤命令
2.1)匹配条件
| 匹配条件 | 含义 |
|---|---|
| -a | 不忽略二进制数据 |
| -E | 将范本样式为延伸的普通表示法来使用,扩展正则表达式 |
| -i | 忽略字符大小写的差别 |
| -n | 在显示符合范本样式的那一列之前,表示出该列的编号 |
| -s | 不显示错误信息 |
| -v | 反转查找 |
| ^ | 匹配字符串开始 |
| $ | 匹配字符串结尾 |
例:
grep “4” test.txt 匹配所有包含4的
grep -v “4” test.txt 匹配除4之外的所有
grep -i “abc” test.txt 匹配所有包含忽略大小写的abc
grep abc$ test.txt 匹配所有以abc结尾的
grep ^abc test.txt 匹配所有以abc开头的
grep ^abc$ test.txt 匹配abc(即以abc开头以abc结尾)
grep -E “abc|ABC” test.txt 扩展正则表达式 匹配abc或者ABC
Test
- test.txt
- console
2.2)匹配次数
| 匹配符号 | 含义 |
|---|---|
| * | 字符出现 [0- 任意次 ] |
| \? | 字符出现 [0-1 次 ] |
| \+ | 字符出现 [1- 任意次 ] |
| \{n} | 字符出现 [n 次 ] |
| \ {m,n\} | 字符出现 [ 最少出现 m 次,最多出现 n 次 ] |
| \{0,n\} | 字符出现 [0-n 次 ] |
| \{m,\} | 字符出现 [ 至少 m 次 ] |
| xy \{n\}xy | 关键字出现 [n 次 ] |
例:
- grep “abc*” test.txt 关键字c出现任意次
- grep “abc?” test.txt 关键字c出现0-1次
- grep “abc+*” test.txt 关键字c出现1-任意次
3)sed命令
- sed为行编辑器
3.1)匹配条件
| 操作指令 | 含义 |
|---|---|
| p | 显示 |
| d | 删除 |
| a | 添加 |
| c | 替换 |
| w | 写入 |
| i | 插入 |
| G | 空行 |
例:
-
sed ` /makasa/a ###` test1.txt 在makasa之后加###
-
sed `/makasa/i ###` test1.txt 在makasa之前加###
-
sed -n ‘1,3P’ test1.txt 打印test1文本中的1-5行
3.2) Test
- test1.txt
- console
3.2.1) P指令操作
3.2.2) d指令操作
3.2.3) w指令操作
3.2.4) i指令及a指令操作
3.2.5) G指令操作
4)awk命令
4.1)基本用法
-
打印第n列:cat /text1.txt |awk ‘{print $n}’
-
打印最后一列:cat /text1.txt |awk ‘{print $NF }’
-
以:进行分割 cat /text1.txt |awk -F: ‘{print $n}’