m20预习笔记整理--正则表达式及find

文本处理工具
linux文本处理三剑客
    grp:文本过滤工具(模式:pattern)
    sed:文本编辑器--流编辑器
    awk:linux上的实习为gawk,文本报告生成器(格式化文本)

三个工具都会用到正则表达式
 Regual Expression
    由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字面意义,而是用于控制或通配的功能
分类
    基本正则表达式
    扩展正则表达式
        二者区别元字符不同
grep:global search regular expression and print out the line
        作用:文本搜索工具,根据用户指定的模式(过滤条件)对目标文本逐行匹配检查,打印匹配到的行
        模式:有正则表达式的元字符及文本字符所编写出的过滤条件

grep
常见选项:--color=auto         自动着色匹配到的文本   
   -i                   ingnorecase忽略字符大小写
   -o                    仅显示匹配到的字符串本身
   -v                     仅显示反向匹配,显示不能匹配到的文本
   -E                    支持使用扩展的正则表达式
   -q                     静默模式不输出任何信息
   -A#显示搜索到的文本结果的之后#行
   -B#显示搜索到的文本结果的之前#行
   -C#显示搜索到的文本结果的之前后#行

正则表达式的元字符
    字符匹配
        .:点号匹配任意单个字符
        []:匹配指定范围内的任意单个字符
        [^]:匹配指定范围外的任意单个字符
        [:digit:],[:lower:],[:upper:],[:alpha:],[:punct:],[:space:],[:alnum:]

匹配次数-----------(正则表达式工作在贪婪模式下有多长匹配多长)
    用在要指定其出现的次数的字符后面
    用于限定其前面字符的出现次数
        *:    匹配其前面字符任意次--0,1或多次
        .*    匹配任意长度的任意字符
        \?    匹配其前的字符0次或1次,即前面的字符可有可无
        \+    匹配其前面的字符1次或多次,即前面的字符出现至少一次
        \{m\}匹配其前面的字符m次,精确次数匹配
        \{m,n\}匹配前面的字符至少m次,至少n次
        \{0,n\}匹配前面的字符至多n次
        \{m,\}匹配前面的字符至少m次,多了不限

位置锚定
    ^:行首锚定;用于模式的最左侧
    $:行尾锚定;用模式的最右侧
    ^PATTERN$:用于匹配整行
    ^$:空白行锚定
    ^[[:space:]]*$:空白行或包含空白字符的行
单词:非特殊字符组成的连续字符(字符串)都称为单词
    \<:词首锚定,用于单词模式的左侧
    \>:词尾锚定,用于单词模式的右侧
    \<PATTERN\>匹配完整单词

分组及引用
    \(\):将一个或多个字符捆绑在一起,当作一个整体进行处理
    \(xy\)*ab
    xy出现0次1次或多次
    注:分组括号中的模式匹配到的内容,会被正则表达式引擎自动记录于内部的变量中,这些变量为
    \1
    \2
    \3
    ......
后向引用:
    grep “\(l..e\)*\1”
    引用前面的分组括号中的模式所匹配到的字符

grep
    支持基本正则表达式
    -E支持扩展正则表达式
    -F不使用正则表达式
egrep
    支持扩展正则表达式
    -G支持基本正则表达式
    -F不使用正则表达式
fgrep  ---------当无需要用到元字符去编写模式时,使用fgrep性能更好
    不支持正则表达式
    -E支持扩展正则表达式
    -G支持基本正则表达式

--------------------------------------------------------------------------------
扩展正则表达式的元字符
    字符匹配
        .:任意单个字符
        []:指定范围内的任意单个字符
        [^]:指定范围外的任意单个字符
    次数匹配
        *:任意次0,1或多次
        ?:0次或1次
        {m}匹配其前字符m次
        {m,n}:匹配其前字符最少m次,最多n次
        {0,m}:匹配其前字符最多m次
        {m,}:匹配最少m次
    位置锚定
        ^:行首锚定
        $:行尾锚定
        \<:词首锚定
        \>:词尾锚定
        或:a|b  整个右侧或左侧
        C|cat     C或cat
        (C|c)at        Cat或cat

分组及引用:
        ():分组
        后向引用:
        \1
        \2
        \3
        ...
---------------------------------------------------------------------------------------------------------
linux文件查找
find
    文件查找
locate

文件查找:在文件系统上查找符合条件的文件

locate
    依赖于实习那构建号的索引库
    系统自动实现
    手动创建跟新数据库(updatedb,非常消耗系统资源)

工作特性:
        查找速度快
        模糊查找
        非实时查找,可能文件已经有变动或不存在

locate
        locate [option]...PATTERN...
                -b只匹配路径中的基名
                -c统计出共有多少个符合条件的文件
                -r使用基本正则表达式

find命令
    实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找

工作特性:
    查找速度略慢
    精确查找
    实时查找

find
    find [OPTIONS] [查找起始路径] [查找条件] [处理动作]

查找起始路径:制动具体搜索目标起始路径;默认为当前目录

查找条件:指定的查找标准,可以根据文件名,大小类型。从属关系,权限等标准进行。默认为,找出指定路径下的所有文件(效果类似ls)

处理动作:对符合查找条件做出的操作,例如删除,默认为输出至标准输出

查找条件:

表达式:
            选项和测试

测试: 结果通常为布尔型(true,false)

查找条件
            -name “PATTERN”
            -iname “PATTERN” 忽略大小写

PATTERN--->glob风格的通配符
                * ? [] [^].....
            -regex PATTERN 基于正则表达式正则表达式查找文件
                匹配是整个路径,而非基名(用的不多)

组合测试:
                与:-a 默认为组合逻辑(多个条件同时符合)
                或:-o (or) 满足其中一个条件即可
                非:-not , ! 条件取反

选项

根据文件的属主属组查找
                ~]#find /tmp -user username

查找/tmp下username属主的文件
                    /uid
                    /group
                    /gid
                    /nouser
                    /nogroup

注:用户被删除,组被删除,没有属主和属组的文件只剩下UID和GID 没有属主和属组
                    可用ls查看

根据文件的类型查找
                -type TYPE
                f普通文件
                d目录文件
                l符号链接文件
                b块设备
                c字符设备
                p管道文件
                s套接字文件

根据文件大小查找
                -size [+|-]#UNIT    #为指定大小的数字
                    常用单位:K.M.G
                    #UNIT-----(#-1,#)
                    -#UNIT----(0,#-1)
                    +#UNIT----(#,无穷大)

根据时间戳查找
                以天为单位
                -atime [+|-]#
                    +#-------(x>=#+1)
                    -#------(x<#)
                    #------(#<=x<#+1)

-mtime
                -ctime
                以分钟为单位
                    -amin
                    -mmin
                    -cmin

根据文件权限查找
                -prem [+|-] MODE
                MDOE:精确匹配
                    MODE 三位数字表示的权限例如664,755,222...
                +MODE任何一类用户(U,G,O)的权限中的任何一位符合条件既满足条件
                    find ./ +222 任何一类用只要拥有写即可
                    find ./ +621 属主有读写或属组有写或其他人有执行权限三种情况符合一种即满足条件
                -MODE每一类用户的权限中的每一位同时符合条件即满足
                    find ./ -222 表示每一位权限小于等于2
                    find ./ -666 包括666,650,550,111但是不包括766

处理动作:
            -print    输出至标准输出;默认动作
            -ls        类似于对查找到的文件执行“ls -l”
            -delete 删除查找到的文件(慎用)
            -fls /PATH/TO/SOMEFILE 查找到文件的长格式信息保存到指定文件中
            -ok COMMAND {}\;    对于查找到的文件执行由COMMAND表示的命令,每次都需要用户确认
            -exec COMMAND {}\; 对于每次查找到的文件执行有由COMMAND表示的命令,但是不需要用户确认
                注意:有些命令不能接收过长的参数此时命令的执行会失败。
                        解决方法,find | xargs COMMAND

时间: 2024-10-08 10:44:17

m20预习笔记整理--正则表达式及find的相关文章

m20预习笔记整理--linux基础知识

程序由指令+数据组成    高级语言--编译器--汇编语言--编译器--机器语言    linux指的是GUN tools+linux内核 系统结构    硬件        内核(内核隐藏了硬件特性,将计算机的计算能力抽象提供给应用程序使用)            应用程序(基于内核的systemcal实现的程序)            shell(也是应用程序)            库函数(.a或.so----是程序,但是没有执行入口,只能被调用)                应用程序,

m20预习笔记整理--bash特性

命令引用    $(command)    `command`    `` 反引号  ~符号键    [[email protected] ~]# mkdir `date +%H-%M-%S`    [[email protected] ~]# mkdir $(date +%H-%M-%S) 命令行展开    ~自动展开为用户的家目录,或指定用户的家目录(管理员可以)    {}可以承载一个以逗号分隔的路径列表,并能够将其展开为多个路径        [[email protected] ~]#

m20预习笔记整理--linux任务计划

周期性执行任务    1.未来的某时间执行一次某任务 at.batch    2.周期性运行某任务crontab 执行结果:会通过邮件发送给用户邮件:    1只用于本机的邮件服务    2本机用户之间传递邮件    /var/spool/mail/username    注:不同于互联网的电子邮件,仅本机用户之间发送邮件        cenos5,6,7默认邮件功能都是开启的 检测邮件功能是否开启    ss -tnl    netstat -tnl    25号端口为服务端口处于监听状态 

WPF笔记整理 - Bitmap和BitmapImage

项目中有图片处理的逻辑,因此要用到Bitmap.而WPF加载的一般都是BitmapImage.这里就需要将BitmapImage转成Bitmap 1. 图片的路径要用这样的,假设图片在project下的Images目录,文件名XXImage.png. pack://application:,,,/xxx;component/Images/XXImage.png 2. 代码: Bitmap bmp = null; var image = new BitmapImage(new Uri(this.X

Perl语言学习笔记 9 正则表达式处理文本

1.替换 s/PATTERN/REPLACE/; #返回是否替换成功的布尔值 可以使用捕获变量,如:s/(\w)/$1/ 匹配失败则不做任何处理 2.定界符 对于没有左右之分的定界符,重复三次即可,如:s///.s### 对于有左右之分的定界符,需使用两对,一对包含模式,一对包含替换字符串,这两对可以不一样,如:s{}{}.s[]{}.s<>[] 3.可选修饰符 /g可进行全局替换,替换所有匹配到的字符串,如:s/ / /g /s:使得 . 匹配所有字符 /i:大小写无关 4.绑定操作符 $f

WPF笔记整理--DataBinding(2)

图片绑定时的一个问题.场景如下: 有2个窗口A和B,A窗口的业务逻辑是编辑生成图片.然后从A窗口可以打开B窗口.B窗口是由A生成所有图片的列表.当在A窗口编辑生成图片并保存后打开B窗口就会看到刚刚生成的图片.关闭B窗口,可以在A窗口中继续编辑图片,再次保存图片并打开B窗口,就会看到最新的图片的变化.图片是保存在本地路径. 解决方案:定义一个Converter,将图片读到MemoryStream中,然后再Binding.代码如下: public object Convert(object valu

WPF笔记整理--DataBinding(1)

WPF的数据绑定是一大亮点.如果用WPF而不用数据绑定,那就太失败了. 也不多废话,如果不知道如何绑定,请百度一下.这里简单的提几点: 1. ObservableCollection可用于集合绑定,由于已经实现了INotifyPropertyChanged,可以通过添加删除集合中的元素来实现对UI列表项更新.注意,当一个ObservableCollection已经有元素,通过再次new集合并不能实现清空页面已显示的内容. 如果希望ObservableCollection中某列表项的属性值改变显示

Deep Learning(深度学习)学习笔记整理系列七

Deep Learning(深度学习)学习笔记整理系列 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除. 3)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢. 4)阅读本文需要机器学习.计算机视觉.神经网络等等基础(如果没有也没关系了,没

Deep Learning(深度学习)学习笔记整理系列之(五)

Deep Learning(深度学习)学习笔记整理系列 [email protected] http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04-08 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主