9、编程基础、grep、egrep

来源:互联网 发布:2016搞笑网络剧有哪些 编辑:程序博客网 时间:2024/06/04 17:46
    bash的基础特性(3)
        提供了编程环境
            程序编程风格
                过程式:以指令为中心,数据服务于指令(c)
                对象式:以数据为中心,指令服务于数据(java)
            shell程序:提供了编程能力,调用系统中已有命令解释执行
            程序执行方式
                计算机:运行二进制指令
                编程语言
                    低级:汇编
                    高级:
                        编译:高级语言-->编译器-->目标代码(把整个程序全部编译为一个二进制程序)(c,c++,java)
                        解释:高级语言-->解释器-->机器代码(用解释器把语言一条条解释成二进制代码)(shell,perl,python)
            过程式编程
                顺序执行
                循环执行
                选择执行
        bash编程:过程式,解释执行
            基本结构
                数据存储:变量、数组
                表达式:变量
                语句:if、for
        shell脚本:文本文件
            头部标明解释器路径(程序的魔数magic number)
                #!/bin/bash
                #!/usr/bin/python
                #!/usr/bin/perl
            运行脚本
                添加执行权限,通过具体路径执行
                bash 文件:将文件提交给bash执行
        变量:命名的内存空间
            数据存储方式
                字符:110为3个字符,占24位
                    字符集:以特定的二进制数绑定字符,汉字2字节65535每个定义为一个汉子
                数值:110占8位
                    整型
                    浮点型
            变量类型(数据类型):内部存储数据的格式
                作用
                    数据存储格式
                    参与的运算(数值才能运算)
                    表示的数据范围
                数据类型
                    字符
                    数值
                        整型
                        浮点型
                变量类型
                    强类型:字符和数值不可运算
                    弱类型:字符和数值由系统自动转换。bash把所有数据存储为字符,需要运算时转换为数值,不支持浮点数值
                逻辑运算:true,false
                    与(&&):只有同时为true时,结果为true
                    或(||):有一个为true时,结果为true
                    非:取反
                    异或:相同为false,不同则为true
                        id root &> /dev/null && echo 成功 || echo 失败
                短路运算
                    与:第一个为0,结果必定为0,后面不用运算
                    或:第一个为1,结果必定为1,后面不用运算
                    
    grep:文件搜索、过滤工具,以指定模式逐行匹配检查,显示匹配到的行
        模式(PATTERN):正则表达式及文本字符编写的过滤条件
            'PATTERN':强引用
            "PATTERN":弱引用,里面包含变量会转换为值
        正则表达式:由一类特殊字符及文本字符所编写的模式
            分为两类
                基本正则表达式:BRE(grep)
                扩展正则表达式:ERE(egrep)
            正则表达式引擎:查检是否匹配
        fgrep:不使用正则表达式匹配
        grep [OPTIONS] PATTERN [FILE...]:在文件中匹配指定的模式
            --color=auto:匹配到的模式以其它颜色显示
            -v:显示未匹配到的行
            -i:忽略大小写匹配
            -o:仅显示匹配到的字符
            -q:不输出信息
            -A 数:显示匹配到的行及后面N行
            -B 数:显示匹配到的行及前面N行
            -C 数:显示匹配到的行及前后面N行
            -E:使用扩展正则
        基本正则表达式元字符
            字符匹配
                .:任意单个字符
                []:指定范围内任意单个字符
                    [aA]:匹配一个a,或一个A
                [^]:指定范围外任意单个字符
                    [0-9]:任意单个数字
                    [a-z]:任意大小写字母
                    [A-Z]:任意大写字母
                    [[:digit:]]:任意数字
                    [[:lower:]]:任意小写字母
                    [[:upper:]]:任意大写字母
                    [[:alpha:]]:任意大小写字母
                    [[:alnum:]]:任意字母和数字
                    [[:space:]]:任意空格
                    [[:punct:]]:任意标点符号
            匹配次数
                *:匹配前面字符任意次
                    例:x*,0个x,1个x,n个x
                    贪婪模式:一直匹配到不能匹配为止
                    .*:任意长度的任意字符
                \?:匹配前面字符0或1次
                \+:匹配前面字符至少一次
                \{数\}:匹配前面字符多少次
                    \{m,n\}:匹配前面字符至少m次至多n次
                    \{0,n\}:匹配前面字符最多n次
                    \{m,\}:匹配前面字符至少m次
            位置锚定
                ^字符:匹配字符出现在行首
                字符$:匹配字符出现在行尾
                ^字符$:匹配字符为整行
                    ^$:空行
                    ^[[:space:]]*$:空白行
                \<或\b:词首锁定,使用在字符前面
                \>或\b:词尾锁定,使用在字符后面
                    \<字符\>:匹配单词,以符号隔开的字符为一个单词
            分组:
                \(\):多个字符设置为一个组匹配
                    \ ( x y \ ) *:表示我匹配xy任意次(不用空格)
                    分组括号中的模式匹配到的内容会被正则表达式引擎记录于自己内部变量中,变量为:\1,\2,\3...,从左至右第几个括号,以第几个左括号为准
                后向引用:引用前面()中的模式所匹配到的字符
                    \数:引用
                    
    egrep及扩展正则表达式
        扩展正则表达式元字符
            字符匹配:同grep一样
                .
                []
                [^]
            次数匹配:同grep一样,但不用脱义符
                *
                ?
                +
                {}
            锚定:同grep一样
                ^
                $
                \< | \b
                \> | \b
            分组:同grep一样,但不用脱方符
                ()
                后向引用\1,\2,\3
            或者:
                a|b:a或者b
                    A|abc:A或abc
                    (A|a)bc:Abc或abc
                    
    fgrep:只找指定字符,搜索快
原创粉丝点击