centos-正则表达式+文件处理

正则表达式

    基于一串特殊字符的排列,用以搜索/取代/删除一列或多列文字字符串

    用于字符串处理,且只是一个字符串处理的标准依据

    支持正则表达式的常用指令

        grep,vi,sed,awk...

基础正则表示法

        语系

            语系不同,正则表现存在一定差异

            语系无关的确定符号,避免语系对编码顺序的影响

                [:alnum:]: 英文大小写字符以及数字 0-9/A-Z/a-z

                [:alpha:]: 英文大小写字符 A-Z/a-z

                [:blank:]: 空格建 Tab键

                [:cntrl:]: 键盘上的控制按键

                [:digit:]: 数字 0-9

                [:graph:]: 空格符以外的其他所有按键

                [:lower:]: 小写字符 a-z

                [:print:]: 任何可以被打印的字符

                [:punct:]: 标点符号

                [:upper:]: 大写字符 A-Z

                [:space:]: 任何可以产生空格的字符

                [:xdigit:]: 16进制数字类型 0-9 A-F a-f

        字符汇总

            ^word: 待搜寻的字符串在行首

            word$: 待搜寻的字符串在行尾

            .: 一个任意字符

            \: 转义字符,去除特殊字符含义

            *: 0到无穷个前一个字符

            [list]: 列出需要匹配的字符

            [n1-n2]: 列出需要匹配的字符范围

            [^list]: 取反

            \{n,m\}: 连续n到m个前一个字符

            \{n\}:连续n个前一个字符

            \{n,}\: 连续n个以上前一个字符

    延伸正则表示法

            +:1到无穷个前一个字符

            ?: 0个到1个前一个字符

            |: 或的方式匹配多个字符串

            (): ()括起部分的匹配

            ()+: ()括起部分匹配 1到多次

        egrep: grep预设基本正则表示法,grep -E

    sed指令工具

        管线指令,支持正则,用于数据内容 取代/删除/新增/截取等

        sed [-nefri] [动作]

            -n:安静模式 只列出sed处理的行

            -e: 执行sed的动作编辑 可省略  可用于指定多个动作

            -f: 从指定文件中读取 sed的动作

            -r: 设置sed动作支持延申正则语法

            -i: 直接修改读取的文件内容

            动作 [n1[,n2]]function

            n1,n2: 指定行

            function

                a: 新增 在指定行的后一行新增字符串

                c: 取代 字符串取代指定行

                d: 删除

                i: 插入 指定行的前一行新增字符串

                p: 打印 将指定行打印 配合-n使用

                s: 取代 搭配正则使用  1,20s/oldstr/newstr/g 解析处理具体行的数据

printf: 格式化输出

        printf '打印格式' 数据内容

        特殊样式

            \b: 退格键 backspace

            \f: 清除屏幕

            \n: 输出新的一行

            \r: Enter键

            \t: 水平TAB键

            \v: 垂直TAB键

            \xNN: NN两位数字,转换成字符

        变量格式

            %ns n个字符

            %ni n位数字

            %N.nf 浮点数 N位数字 其中n位小数

    awk: 数据内容处理工具 管线命令

        awk '[BEGIN{动作}] 条件类型1{动作1} 条件类型2{动作2}...[END{动作}]' fileName

        以行为一次处理单位,以字段为最小处理单位

        NF: 每一行字段数

        NR: 当前行号

        FS: 分割字符,默认空格

        $0: 整行数据变量名

        $n: 单行中第n个字段的变量名

        支持逻辑运算符

        print/printf

        {}中指令分割: ; 或者 Enter

        cat pay.txt | \

        awk 'NR==1{printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"Total"}

        NR>=2{total=$2+$3+$4

        printf "%10s %10d %10d %10d %10.2f\n",$1,$2,$3,$4,total}

    文件比对工具

        diff: 纯Ascii文档比对工具 行为单位比对

        patch:补丁制作

        cmp:字节为单位比对

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容