文本内容查找grep、文件查找find、正则匹配

时间:2023-12-24 17:25:07

一、文本内容查找工具 grep

grep   egrep (文本过滤)   fgrep (不支持正则)

对文本的内容按照指定的匹配模式基于行来进行筛选

格式     grep [选项] 模式 文件

选项:

-v:反向匹配,显示不能被模式匹配到的行

-o:仅匹配被模式匹配到的字符串,而非整行

-q:静默模式

-i:不区分大小写,ignore-case

-E:支持扩展(相当于egrep)  grep -E = egrep

根据正则表达式进行匹配查找

1、点 .   :  任意单个字符

文本内容查找grep、文件查找find、正则匹配

2、[ ]  : 指定[ ]范围内的任意单个字符 

  [0-9],[[:digit:]] 匹配任意单个数字

文本内容查找grep、文件查找find、正则匹配

  [a-z],[[:lower:]] 匹配任意单个小写字母

文本内容查找grep、文件查找find、正则匹配

  [A-Z],[[:upper:]] 匹配任意单个大写字母

文本内容查找grep、文件查找find、正则匹配

  所有的字母:[[:alpha:]]

文本内容查找grep、文件查找find、正则匹配

  字母+数字:[[:alnum:]]

文本内容查找grep、文件查找find、正则匹配

  空格:[[:space:]](空格不等同于空行)

文本内容查找grep、文件查找find、正则匹配

  标点符号字符:[[:punct:]]

文本内容查找grep、文件查找find、正则匹配

  [^]: 指定范围外的任意单个字符

文本内容查找grep、文件查找find、正则匹配

3、次数匹配:用来指定匹配其前面的字符的次数

  *  : 星号前面的一个字符出现0次或n次

文本内容查找grep、文件查找find、正则匹配

  .*  : 匹配任意长度的任意字符

文本内容查找grep、文件查找find、正则匹配

  \?  : 问号前面的一个字符出现0次或者1次  \转义

文本内容查找grep、文件查找find、正则匹配

  \+  : 前面字符至少1次  (1次到n次)

文本内容查找grep、文件查找find、正则匹配

  \{m\}  : 匹配m次

文本内容查找grep、文件查找find、正则匹配

  \{m,n\}  : 至少m次,至多n次

文本内容查找grep、文件查找find、正则匹配

  \{m,\}  :  至少m次

文本内容查找grep、文件查找find、正则匹配

  \{,n\}  :  至少0次,至多n次

文本内容查找grep、文件查找find、正则匹配

4、位置锚定:用于指定字符出现的位置

  ^   : 锚定行首 ^char

文本内容查找grep、文件查找find、正则匹配

  $   : 锚定行尾 char$

文本内容查找grep、文件查找find、正则匹配

  ^$  : 空白行

文本内容查找grep、文件查找find、正则匹配

5、单词的位置锚定

  \<char :锚定单词词首

  char\>  : 锚定单词词尾

文本内容查找grep、文件查找find、正则匹配

6、egrep:支持扩展正则表示({} , (), ?, +可以不用转义) 等价于:grep -E

文本内容查找grep、文件查找find、正则匹配

二、管道操作

管道:

Linux:

程序=指令+数据

使用目的单一的小程序

组合小程序完成复杂的任务

 指令1 | 指令2 | 指令3

 | 左边命令的输出作为 | 后边命令的输入

 Linux 中不是所有命令都支持管道,不支持管道的命令:cd  rm  find  ...

文本内容查找grep、文件查找find、正则匹配

三、文本内容处理命令 wc, tr, cut, sort

1、wc:即 word count

ctrl+d 提交

行 单词数 字节数

wc[option][file]...

-l:统计行数

-c:统计字节数

-w:统计单词数

文本内容查找grep、文件查找find、正则匹配

2、tr:转换或删除字符,tr ‘集合1’ ‘集合2’,必须使用管道

  转换字符:会把第一个字符集的对应转换为第二个字符集中的对应转换

文本内容查找grep、文件查找find、正则匹配

  -d:删除出现过的字符集

文本内容查找grep、文件查找find、正则匹配

3、cut:根据指定的分隔符切片,并显示出需要显示的片

-d字符:指定分隔符

-f (field)   数字:指定要显示的字段

单个数字:一个字段

多个离散字段:逗号分隔

多个连续字段:-分隔

文本内容查找grep、文件查找find、正则匹配

4、sort:按字符进行比较

格式 sort[options] FILE

-f:忽略大小写

-n:对数字进行排序

-t:指定分隔符

-k数字:指定分隔后进行排序字段列号

 -u:重复的行,只显示一行

 -r:倒序排列

 例题:查询用户,按照编号从大到小的顺序排列,取编号最大的前5名,列出用户名和编号

文本内容查找grep、文件查找find、正则匹配

四、文件查找---------find命令

①:根据文件名  -name  -iname(忽略大小写)

文本内容查找grep、文件查找find、正则匹配

②:根据属主属组查找  

  -user username  根据属主查找  

  -group grpname  根据属组查找

文本内容查找grep、文件查找find、正则匹配

  可接组合条件 -a而且 -o或者:find /home -user root -a -group root  属主和属组都是root的

③:根据文件类型查找   -type

文本内容查找grep、文件查找find、正则匹配

④根据文件的大小来查找   -size

文本内容查找grep、文件查找find、正则匹配

⑤根据时间戳来查找  -atime  -mtime   -ctime (单位天,如果按照-mmin)

文本内容查找grep、文件查找find、正则匹配

五、查到后的处理动作

①:打印(默认)

  -print  默认

  -fls  自定义

  把输出结果打印到output.txt中

文本内容查找grep、文件查找find、正则匹配

②:查询属性信息(类似ls -l)  -ls

文本内容查找grep、文件查找find、正则匹配

③:删除  -delete

文本内容查找grep、文件查找find、正则匹配

④:后接命令(交互) -ok

文本内容查找grep、文件查找find、正则匹配

⑤:后接命令(不交互) -exec cmd {} \;

文本内容查找grep、文件查找find、正则匹配

六、让find命令支持管道(xargs命令)

  find命令不支持管道,但是可以使用xargs命令强行驱动可以使用管道

文本内容查找grep、文件查找find、正则匹配