• shell编程中的正则表达式和文本处理工具


    1. 常规匹配

    一串不包含特殊字符的正则表达式匹配它自己

    cat 目标文档 | grep 需查找的字符
    
    • 1

    2. 常用特殊字符

    2.1 特殊字符:^

    ^匹配一行的开头

    grep ^a
    
    • 1

    会匹配出所有a开头的内容

    2.2 特殊字符:$

    $匹配一行的结束

    grep a$
    
    • 1

    会匹配出所有以a结尾的内容
    ^$会匹配出所有的空行

    2.3 特殊字符:.

    .匹配一个任意的字符

    grep x..y
    
    • 1

    会匹配出xaby xvcy等的所有行

    2.4 特殊字符:*

    *不单独使用,他和上一个字符连用,表示匹配上一个字符 0 次或多次

    grep x*y
    
    • 1

    会匹配出xy xxy xxxy等的所有行
    ^a.*b$会匹配出以a开头,以b结束的所有行,ab之间的内容为.*,表示随便是什么内容都可以

    2.5 字符区间(中括号):[]

    []表示匹配某个范围内的一个字符

    格式功能
    [6,8]匹配 6 或者 8
    [0-9]匹配一个 0-9 的数字
    [0,9]*匹配任意长度的数字字符串
    [a-z]匹配一个 a-z 之间的字符
    [a-z]*-匹配任意长度的字母字符串
    [a-c, e-f]匹配 a-c 或者 e-f 之间的任意字符

    2.6 特殊字符:\

    \表示转义,和特殊字符组合使用,比如grep '\$'就可以匹配出带有$的内容了
    注意需要使用单引号将表达式引起来

    3. 文本处理工具

    3.1 cut

    通过cut [选项参数] filename的方式就可以对目标文件进行特定裁剪

    格式功能
    -f列号,提取第几列
    -d分隔符,按照指定分隔符分割列,默认是制表符“\t”
    -c按字符进行切割 后加加 n 表示取第几列 比如-c 1

    先创建一个hello_world.sh文件
    执行cut -d " " -f 1 hello_world.sh就会以下内容,表示按制表符切分文件,并取第一列

    #!/bin/bash
    
    echo
    
    • 1
    • 2
    • 3

    执行cut -d "/" -f 1 hello_world.sh就会得到以下内容,表示按/切分文件,并取第一列

    #!
    
    echo "hello world"
    
    • 1
    • 2
    • 3

    执行cut -c 1-4 hello_world.sh就会得到以下内容,表示按字符切割,取第1位到第4位字符

    #!/b
    
    echo
    
    • 1
    • 2
    • 3

    3.2 awk

    通过awk [选项参数] '/pattern1/{action1} /pattern2/{action2}...' filename的方式就可以对目标文件进行特定裁剪
    其中pattern表示 awk 在数据中查找的内容,就是匹配模式
    action表示在找到匹配内容时所执行的一系列命令

    格式功能
    -F指定输入文件分隔符
    -v赋值一个用户定义变量
    内置变量功能
    FILENAME文件名
    NR已读的记录数(行号)
    NF浏览记录的域的个数(切割后,列的个数)
  • 相关阅读:
    Linux常用的压缩和解压命令gzip,gunzip,tar,zip, unzip和bzip2,bunzip2
    Shell系统学习之循环结构
    管理类联考——英语二——阅读篇——题材:环保
    requestAnimationFrame 和 setTimeout 的区别
    Flask框架初学-03-模板
    图片格式转换软件哪个好?建议收藏这三个方法
    调整SGA遇到ORA-00845错误
    我赢助手小技巧:学会这三招,爆款内容视频完播率提高50%(下)
    素数筛法代码-总结(Python,C++)
    Nested嵌套对象类型还挺实用
  • 原文地址:https://blog.csdn.net/weixin_44999258/article/details/126450995