美文网首页
十一、正则表示法与文件格式处理

十一、正则表示法与文件格式处理

作者: 努力爬行中的蜗牛 | 来源:发表于2018-08-22 10:24 被阅读4次
    特殊符号 代表意义
    [:alnum:] 代表英文大小写字符及数字,亦卲 0-9, A-Z, a-z
    [:alpha:] 代表任何英文大小写字符,亦卲 A-Z, a-z
    [:blank:] 代表空格键与 [Tab] 按键两者
    [:cntrl:] 代表键盘上面的控制按键,亦卲包括 CR, LF, Tab, Del.. 等等
    [:digit:] 代表数字而已,亦卲 0-9
    [:graph:] 除了空格符 (空格键不 [Tab] 按键) 外的其他所有按键
    [:lower:] 代表小写字符,亦即 a-z
    [:print:] 代表任何可以被打印出来的字符
    [:punct:] 代表标点符号 (punctuation symbol),亦卲:" ' ? ! ; : # $...
    [:upper:] 代表大写字符,亦即 A-Z
    [:space:] 任何会产生空白的字符,包括空格键, [Tab], CR 等等
    [:xdigit:] 代表 16 进位的数字类型,因此包括: 0-9, A-F, a-f 的数字不字符

    1、基础正则表示法的练习

    1.1 搜寻特殊字符
    grep -n 'the' regular_express.txt
    grep -vn 'the' regular_express.txt #反向选择
    grep -in 'the' regular_express.txt #不区分大小写
    grep -n 't[ae]st' regular_express.txt # []里面无论有几个字符,都仅代表一个字符
    grep -n '[0-9]' regular_express.txt # 一组集合字符
    grep -n '[a-z]' regular_express.txt # 一组集合字符
    grep -n '^the' regular_express.txt # 一行字符以the开头
    grep -n '.$' regular_express.txt # 一行字符以.结尾

    . 小数点:代表一定有一个任意字符的意思,
    * 星号:代表重复前一个0到无穷多次的意思,为组合形态;
    grep -n 'ooo' egular_express.txt # 一行中包含2个或者以上的o;
    grep -n 'g.
    g' egular_express.txt # 一行中包含g*g的内容;
    grep -n 'o{2}' egular_express.txt # 包含2个o的内容行;限定连续字符
    grep -n 'o{2,5}' egular_express.txt # 包含2个到5个o的内容行;限定连续字符

    RE字符 意义与范例
    ^word 待搜寻的字符在行首,例:grep -n '^#' egular_express.txt
    word$ 待搜寻的字符在行尾,例:grep -n '!$' egular_express.txt
    . 代表一定有一个任意字符的字符,例:grep -n ’e.e' egular_express.txt
    \ 跳脱字符,将特符号的特殊意义去除,例:grep -n ' egular_express.txt
    * 重复0到无穷多个的前一个RE字符,例:grep -n ’ess*' egular_express.txt
    [list] 字符集合RE字符,里面列出想要截取的字符,例:grep -n 'g[ld]' egular_express.txt
    [n1-n2] 字符集合的RE字符,里面列出想要截取的字符范围,例:grep -n ‘[0-9]' egular_express.txt
    [^list] 字符集合的RE字符,里面列出不要的字符串或者范围,例:grep -n 'oo[^t]' egular_express.txt
    {n,m} 连续n到m个前一个RE字符,例:grep -n 'go{2,3}g' egular_express.txt

    2、sed工具

    sed本身也是一个管线命令,可以分析standard input,还可以将数据进行取代、删除,截取特定行等功能
    nl /etc/passwd | sed '2,5d' # 将 /etc/passwd 的内容列出幵且打印行号,同时,请将第 2~5 行删 除!
    nl /etc/passwd | sed '2a drink tea' #在第二行后(亦卲是加在第三行)加上『drink tea?』字样!
    nl /etc/passwd | sed '2,5c No 2-5 number' # 将第 2-5 行癿内容叏代成为『No 2-5 number』
    nl /etc/passwd | sed -n '5,7p' # 仅列出 /etc/passwd 档案内癿第 5-7 行

    3、文件的格式化与相关处理

    3.1 格式化打印:printf
    3.2 处理处理工具:awk
    3.3 档案对比工具:diff,cmp

    相关文章

      网友评论

          本文标题:十一、正则表示法与文件格式处理

          本文链接:https://www.haomeiwen.com/subject/mbreiftx.html