一、文本内容查找工具 grep
grep egrep (文本过滤) fgrep (不支持正则)
对文本的内容按照指定的匹配模式基于行来进行筛选
格式 grep [选项] 模式 文件
选项:
-v:反向匹配,显示不能被模式匹配到的行
-o:仅匹配被模式匹配到的字符串,而非整行
-q:静默模式
-i:不区分大小写,ignore-case
-E:支持扩展(相当于egrep) grep -E = egrep
根据正则表达式进行匹配查找
1、点 . : 任意单个字符
2、[ ] : 指定[ ]范围内的任意单个字符
[0-9],[[:digit:]] 匹配任意单个数字
[a-z],[[:lower:]] 匹配任意单个小写字母
[A-Z],[[:upper:]] 匹配任意单个大写字母
所有的字母:[[:alpha:]]
字母+数字:[[:alnum:]]
空格:[[:space:]](空格不等同于空行)
标点符号字符:[[:punct:]]
[^]: 指定范围外的任意单个字符
3、次数匹配:用来指定匹配其前面的字符的次数
* : 星号前面的一个字符出现0次或n次
.* : 匹配任意长度的任意字符
\? : 问号前面的一个字符出现0次或者1次 \转义
\+ : 前面字符至少1次 (1次到n次)
\{m\} : 匹配m次
\{m,n\} : 至少m次,至多n次
\{m,\} : 至少m次
\{,n\} : 至少0次,至多n次
4、位置锚定:用于指定字符出现的位置
^ : 锚定行首 ^char
$ : 锚定行尾 char$
^$ : 空白行
5、单词的位置锚定
\<char :锚定单词词首
char\> : 锚定单词词尾
6、egrep:支持扩展正则表示({} , (), ?, +可以不用转义) 等价于:grep -E
二、管道操作
管道:
Linux:
程序=指令+数据
使用目的单一的小程序
组合小程序完成复杂的任务
指令1 | 指令2 | 指令3
| 左边命令的输出作为 | 后边命令的输入
Linux 中不是所有命令都支持管道,不支持管道的命令:cd rm find ...
三、文本内容处理命令 wc, tr, cut, sort
1、wc:即 word count
ctrl+d 提交
行 单词数 字节数
wc[option][file]...
-l:统计行数
-c:统计字节数
-w:统计单词数
2、tr:转换或删除字符,tr ‘集合1’ ‘集合2’,必须使用管道
转换字符:会把第一个字符集的对应转换为第二个字符集中的对应转换
-d:删除出现过的字符集
3、cut:根据指定的分隔符切片,并显示出需要显示的片
-d字符:指定分隔符
-f (field) 数字:指定要显示的字段
单个数字:一个字段
多个离散字段:逗号分隔
多个连续字段:-分隔
4、sort:按字符进行比较
格式 sort[options] FILE
-f:忽略大小写
-n:对数字进行排序
-t:指定分隔符
-k数字:指定分隔后进行排序字段列号
-u:重复的行,只显示一行
-r:倒序排列
例题:查询用户,按照编号从大到小的顺序排列,取编号最大的前5名,列出用户名和编号
四、文件查找---------find命令
①:根据文件名 -name -iname(忽略大小写)
②:根据属主属组查找
-user username 根据属主查找
-group grpname 根据属组查找
可接组合条件 -a而且 -o或者:find /home -user root -a -group root 属主和属组都是root的
③:根据文件类型查找 -type
④根据文件的大小来查找 -size
⑤根据时间戳来查找 -atime -mtime -ctime (单位天,如果按照-mmin)
五、查到后的处理动作
①:打印(默认)
-print 默认
-fls 自定义
把输出结果打印到output.txt中
②:查询属性信息(类似ls -l) -ls
③:删除 -delete
④:后接命令(交互) -ok
⑤:后接命令(不交互) -exec cmd {} \;
六、让find命令支持管道(xargs命令)
find命令不支持管道,但是可以使用xargs命令强行驱动可以使用管道