grep/find常用参数+基础/拓展正则符号(day 22)

grep
-n 显示行号
-v 排除,取反
-i 过滤的时候忽略大小写
-E 效果等同于egrep,支持扩展正则符号
-o 可以看匹配过程

grep -A -B -C 属于上下文控制

-A 显示匹配指定内容及之后的n行

-B  显示匹配指定内容及之前的n行

-C  显示匹配指定内容及其前后各n行

find
-type 什么类型的文件 f表示文件 d表示目录
-name 文件名
-size 根据大小查找文件 +表示大于 -表示小于 +10k +10M +10G

-maxdepth 指定最大深度,不加就是所有层(需要放在-type之前)
-mtime 根据修改时间查找文件 +7 7天前文件 (主要用于查找系统日志,旧的日志文件)

find /etc -type f -name ‘passwd’ /etc/passwd
find / -name ‘passwd’
find /etc -type f -name ‘*.conf’
find / -type f | grep ‘oldboy’

find / -maxdepth 2 -type f -name ‘*.conf’

find命令与其他命令配合
find + 简单命令:find找出想要的文件,删除,看详细信息,显示文件内容,过滤
#find 不要与交互命令配合。 不可以find+vim
1.可以用反引号 ls -l `find ………………·
2.可以find / -type f -name ‘*.txt’ -exec ls -l {} \;
#{}为找到的文件的占位符
3.默认管道无法把数据(字符串)变化为命令的参数导致传递失败,可以用 |xargs
find /oldboy -type f -name ‘*.txt’ | xargs ls -l

正则表达式及常用符号

正则:regular expression RE

基础正则BRE(Basic)               符号: ^ $ . * .* [] [^ ]

1.^ :以…为开头的行 ‘^字符’ cat -A .txt 显示隐藏符号(行尾空格 换行符)
2.$ :以…为结尾的行 ‘字符$’ #’^m$’匹配一行只有一个字母m的行
3.^$ :空行,这行没有任何字符
4. . 任意一个字符
5.\ 转义字符:去掉特殊符号的含义 grep ‘\.$’ re.txt #显示以.结尾的行
6.* ;前一个字符连续出现0次或0次以上 grep ‘0*’ re.txt #显示0或很多0000
7. .*:所有 是正则中使用频率非常高的符号,是一个组合
# grep ‘^I.*Linux’ re.txt 匹配所有以I开头,后面是Linux的行

  • 贪婪性:
  • 正则表示连续出现的时候或者表示所有的时候,正则体现出贪婪性尽可能多的匹配

未来根据实际需求使用贪婪性
8. [] [abc]表示匹配其中的任意一个字符,即找出带有a或b或c的行并标记abc,试用频率较高,[ ]代表一个字符
#[a-z]匹配a-z之间任意一个字符,查找所有小写字母
#'[a-zA-Z]’所有字母 grep中可以用简写[a-Z] [a-zA-Z0-9]简写为[0-Z]
#在[]中特殊含义会被去掉,[]与拓展正则+ -一起使用较多
9.[^字符]表示取反

扩展正则ERE (121) 符号: | + ( ) { } ?

1.egrep支持扩展正则(或grep -E)

2.sed使用sed -r支持扩展正则

3.awk默认支持扩展正则

1.+ :前一个字符连续出现1次或1次以上,+大部分配合[]一起使用
egrep -o ‘[a-z]+’ re.txt | sort | uniq -c | sort -rn
#sort排序,uniq -c统计出现次数 sort -rn 逆序(从大到小排序),'[a-z]+’匹配任意长度的由这些字符组成的字符串
2.|:或者 一般用于一些单词的或者 egrep ‘oldboy|Linux’ re.txt
3.() :一般表示一个整体,用于后向引用 (反向引用sed)
#检查系统中是否存在tree,vim,sl
rpm -qa | grep -Ei ‘^(tree|vim|sl)’
4.{} :使用频率不高,可以通过{}精确控制出现次数,用于匹配连续出现的范围
egrep ‘0{1,3}’ re.txt
a{n,m} 前一个字符连续出现至少n次,最多m次
a{n} 前一个字符连续出现n次 匹配固定的次数
a{n,} 前一个字符连续出现至少n次(几乎用不到)
a{,m} 前一个字符连续出现最多m次 (几乎用不到)
5.? :前一个字符出现0次或1次,一般用于匹配的内容可能有(出现1次)或者没有出现(出现0次)
egrep ‘g?od’ good.txt #结果只有gd和god

1人评论了“grep/find常用参数+基础/拓展正则符号(day 22)”

回复 你猜 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部