Shell 编程之正则表达式与文本处理器

正则表达式
正则表达式又称正规表达式、常规表达式
正则表达式是由普通字符与元字符组成的文字模式
正则表达式一般用于脚本编程与文本编辑器中
元字符总结
^ 匹配输入字符串的开始位置。除非在方括号表达式中使用,表示不包含该字符集合。要匹配"^"
字符本身,请使用 "\^"
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 "" 也匹配 '\\n' 或 '\\r'. 要匹配"" 字符本身,请使用 "\$"
. 匹配除"\r\n" 之外的任何单个字符
\ 反斜杠,又叫转义字符,去除其后紧跟的元字符或通配符的特殊意义
* 匹配前面的子表达式零次或多次。要匹配"*" 字符,请使用 "\*"
[] 字符集合。匹配所包含的任意一个字符。例如,"[abc]" 可以匹配 "plain" 中的 "a"
[^] 赋值字符集合。匹配未包含的一个任意字符。例如,"[^abc]" 可以匹配 "plain" 中任何一个字母
[n1-n2] 字符范围。匹配指定范围内的任意一个字符。例如,"[a-z]" 可以匹配 "a" 到 "z" 范围内的任一个 小写字母字符。
注意:只有连字符( - )在字符组内部,并且出现在两个字符之间时,才能表示字符的范围;如
果出现在字符组的开头,则只能表示连字符本身
{n} n 是一个非负整数,匹配确定的 n 次。例如, "o{2}" 不能匹配 "Bob" 中的 "o" ,但是能匹配 "food"
中 的"oo"
{n,} n 是一个非负整数,至少匹配 n 次。例如, "o{2,}" 不能匹配 "Bob" 中的 "o" ,但能匹配 "foooood" 中的所有 o 。 "o{1,}" 等价于 "o+" 。 "o{0,}" 则等价于 "o*"
{n,m} m 和 n 均为非负整数,其中 n<=m ,最少匹配 n 次且最多匹配 m 次
扩展正则表达式

  • 作用:重复一个或者一个以上的前一个字符
    ? 作用:零个或者一个的前一个字符
    | 作用:使用或者(or )的方式找出多个字符
    () 作用:查找" 组 " 字符串
    ()+ 作用:辨别多个重复的组
    文本处理器
    sed 工具
    读取: sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓
    冲区中(又称模式空间, pattern space )。
    执行:默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行
    的地址,否则 sed 命令将会在所有的行上依次执行。
    显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。
    sed 命令常见用法
    -e 或 --expression= :表示用指定命令或者脚本来处理输入的文本文件。
    -f 或 --file= :表示用指定的脚本文件来处理输入的文本文件。
    -h 或 --help :显示帮助。
    -n 、 --quiet 或 silent :表示仅显示处理后的结果。
    -i :直接编辑文本文件。"操作 " 用于指定对文件操作的动作行为,也就是 sed 的命令
    a :增加,在当前行下面增加一行指定内容。
    c :替换,将选定行替换为指定内容。
    d :删除,删除选定的行。
    i :插入,在选定行上面插入一行指定内容。
    p :打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以 ASCII 码输出。其通常与 "-n" 选项一起使用。
    s :替换,替换指定字符。
    y :字符转换
    awk 工具
    awk 常见用法
    awk 选项 ' 模式或条件 { 编辑指令 }' 文件 1 文件 2 ... //过滤并输出文件中符合条件的内容
    awk -f 脚本文件 文件 1 文件 2 ... //从脚本中调用编辑指令 ,过滤并输出内容
    awk 包含几个特殊的内建变量(可直接用)
    FS :指定每行文本的字段分隔符,默认为空格或制表位。
    NF :当前处理的行的字段个数。
    NR :当前处理的行的行号(序数)。
    0 :当前处理的行的整行内容。 n :当前处理行的第 n 个字段(第 n 列)。
    FILENAME :被处理的文件名。
    RS :数据记录分隔,默认为 \n ,即每行为一条记录。
    sort 工具
    sort 是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序
    -f :忽略大小写;
    -b :忽略每行前面的空格;
    -M :按照月份进行排序;
    -n :按照数字进行排序;
    -r :反向排序;
    -u :等同于 uniq ,表示相同的数据仅显示一行;
    -t :指定分隔符,默认使用 [Tab] 键分隔;
    -o < 输出文件 > :将排序后的结果转存至指定文件;
    -k :指定排序区域。
    uniq 工具
    -c:进行计数;
    -d :仅显示重复行;
    -u :仅显示出现一次的行。
    tr 工具
    -c :取代所有不属于第一字符集的字符;
    -d :删除所有属于第一字符集的字符;
    -s :把连续重复的字符以单独一个字符表示;
    -t :先删除第一字符集较第二字符集多出的字符。
相关推荐
西洼工作室13 小时前
【java 正则表达式 笔记】
java·笔记·正则表达式
kiss strong1 天前
正则表达式
正则表达式
Linux运维技术栈1 天前
Python字符串及正则表达式(十一):正则表达式、使用re模块实现正则表达式操作
开发语言·python·正则表达式
jackiendsc1 天前
Java中正则表达式的介绍、使用场景及示例代码
java·开发语言·正则表达式
taller_20001 天前
VBA之正则表达式(48)-- 快速拆分中文语句
正则表达式·正则·拆分中文·中文拆分·中文标点
梧桐树04291 天前
python:正则表达式
数据库·python·正则表达式
葡萄架子1 天前
Python中的正则表达式
python·mysql·正则表达式
Oneforlove_twoforjob2 天前
【Java】正则表达式基础题+场景题练习
正则表达式
产幻少年3 天前
正则表达式
正则表达式
Spcarrydoinb3 天前
正则表达式
笔记·学习·正则表达式·脚本语言