Linux文本搜索(一)之 grep、find

一、常用元字符简介

字符功能
\转义字符
.匹配除换行符(\n、\r)之外的任意一个字符
*匹配前面的子表达式零次或多次
+匹配前面的子表达式一次或多次
?匹配前面的子表达式零次或一次
$匹配结尾
[]匹配方括号内的字符集合的任意一个
[^xyz]匹配除xyz之外的任意字符
x|y匹配x或者y
{n}匹配前一个字符n次(严格的n次)
{n,}匹配前一个字符至少n次
{n,m}匹配前一个字符至少n次,最多m次

二、grep 命令介绍

  1. 主要参数介绍
-E,     相当于  egrep   支持扩展的正则表达式

基本正则表达式(BRE)中,只承认“^”、“$”、“.”、“[”、“]”、“*”这些是元字符,所有其他的字符都被识别为普通字符。

而在扩展正则表达式(ERE)中,则在BRE的基础上增加了“(”、“)”、“{”、“}”、“?”和“+”、“|”等元字符。

-F,      相当于  fgrep    不支持正则表达式

-B       除了显示符合范本样式的那一列之外,并显示该行之前的内容。后面可跟一数字,表示显示前几行
-A       除了显示符合范本样式的那一列之外,并显示该行之后的内容。后面可跟一数字,表示显示后几行
-C       除了显示符合范本样式的那一列之外,并显示该行前后的内容。后面可跟一数字,表示显示前后各几行
-b       在显示符合样式的那一行之前,标示出该行第一个字符的偏移量。
-a       不要忽略二进制的数据。
-c       计算符合样式的行数。
-v       显示不包含匹配文本的所有行(小写v   大写的V是显示版本信息)
-n       显示行号
-w       显示严格全字符符合的行
-o       只显示符合PATTERN的部分
-L       列出文件内容不符合指定的样式的文件名称(-l 与之相反)
-r       递归的方式匹配目录下的所有文件
-H      在显示符合样式的那一行之前,表示该行所属的文件名称。(-h 与之相反)
-i        忽略字符大小写
  1. 例子
[hadoop@bigdata data]$ grep pa jike.txt 
#Root password
passsss
passsssinon
pa

[hadoop@bigdata data]$ grep -w pa jike.txt 
pa

[hadoop@bigdata data]$ grep -o pa jike.txt 
pa
pa
pa
pa

# 匹配以#开头的行
[hadoop@bigdata data]$ grep ^# jike.txt 
#Root password

[hadoop@bigdata data]$ grep passsssi* -C 1 -n jike.txt 
1-#Root password
2:passsss
3:passsssinon
4-pa

[hadoop@bigdata data]$ grep passsssi* -n jike.txt 
2:passsss
3:passsssinon

[hadoop@bigdata ~]$ grep p -r -H -n -b data/
data/wc.data:3:28:beijing,is,the,capital,of,china
data/hello.txt:4:28:4,jepson
data/spooling_data/wc.data.COMPLETED:3:28:beijing,is,the,capital,of,china
data/spooling_data/hello.txt.COMPLETED:4:28:4,jepson
data/position/taildir_position.json:1:0:[{"inode":182330329,"pos":114,"file":"/home/hadoop/data/taildir/test1/example.log"},{"inode":184597617,"pos":0,"file":"/home/hadoop/data/taildir/test2/b.log"},{"inode":184597614,"pos":20,"file":"/home/hadoop/data/taildir/test2/a.log"}]
data/jike.txt:1:0:#Root password
data/jike.txt:2:15:passsss
data/jike.txt:3:23:passsssinon
data/jike.txt:4:35:pa

三、find命令

在指定目录中查找指定文件

  1. 语法
find path 查找条件
  1. 常用参数
-name name,文件名符合name的文件(-iname 忽略大小写)
-regex PATTERN  使用正则表达式来匹配
-type 指定查找的文件类型   
		f  文件
		d  目录
		l   符号链接
-empty   检索空文件
!       反义(不符合条件的)
-user   检查文件所属用户
-group    检查文件所属用户组


# 天
-mtime   内容修改
-atime    访问过
-ctime     修改过

# 分钟
-mmin
-amin
-cmin
			后跟一个负数 表示 几天/分钟以内  eg:-atime -2  两天以内访问过   -atime 2  两天前访问过
			后跟一个正数,表示几天/分钟以前
-size  根据文件大小进行搜索
	c 字节
	k kB
	M MB
	G GB
	eg:find . -size +13M   大于13MB    负号表示小于
-perm    通过权限进行搜索   -perm 664   /  -perm u=rw,g=rw,o=r
-exec    对搜索结果执行命令,无提示   find .-type d -exec ls -l {} \;
-ok        对搜索结果执行命令,有提示(交互式,需要确认)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值