Shell入门(二)grep Awk find Sed操作命令
前言
本章主要介绍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}’