正则表达式 基础
正则表示法:处理字符串的方法,是以行为单位来进行字符串的处理行为,透过一些特殊符号的辅助,可以让使用者轻易的达到『搜寻/删除/替代』某特定字符串的处理程序! 正则表示法的字符串表示:基础正则表示法和延伸正则表示法 通配符 (wildcard) 代表?是 bash 操作接口的一个功能』,但正则表示法则是一种字符串处理的表示方式。 grep [-A] [-B] [--color=auto] '搜寻字符串' filename -A :后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出; -B :后面可加数字,为 befer ?意思,除了列出该行外,前面的 n 行也列出; --color=auto 可将正确?那个数据列出颜色 -n :number,列出行号 ~/.bashrc 内加上这行『alias grep='grep --color=auto'』再以『 source ~/.bashrc 』来立即生效?可,这样每次执行 grep 他都会自动加上颜色。 语系使用『 export LANG=C 』的设定值; 例题一、搜寻特定字符串 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 '[^g]oo' regular_express.txt oo 前面不想要有小写字符,可以这样写[^abcd....z]oo , 但是这样似乎不怎么方便,由于小写字符的 ASCII 上编码的顺序是连续的,因此简化为底下这样 grep -n '[^a-z]oo' regular_express.txt 例题三、行首与行尾字符 ^ $ grep -n '^[^a-zA-Z]' regular_express.txt ^ 符号,在字符集合符号(括号[])内与外是不同的! 在 [] 内代表『反向选择』,在 [] 外则代表定位在行首的意义! grep -n '.$' regular_express.txt要找出行尾结束为小数点 (.) 那一行 跳脱字符()来加以解除其特殊意义 (^$),这样就可以找出空白行 例题四、任意一个字符 . 不重复字符 * . (小数点):代表『一定有一个任意字符』 * (星星号):代表『重复前一个 0 到无穷多次』为组合形态 至少两个 o 以上的字符串时,就需要 ooo* 例题五、限定连续 RE 字符范围 {} 找出两个到五个 o 的连续字符串,要使用到限定范中的字符 {} 了。 但因为 { 和 } ?符号在shell 是有特殊意义,要使用跳脱字符 失去特殊意义才 grep -n 'go{2,5}g' regular_express.txt 找出 g 后面接 2 到 5 个 o ,然后再接一个 g 的字符串 2 个 o 以上的 goooo....g grep -n 'go{2,}g' regular_express.txt 『正则表示法的特殊字符』与一般在指令列输入指令的『通配符』并不相同, 例如,在通配符当中? * 代表的是『 0 ~ 无限多个字符』的意思,但是在正则表示法当中, * 则是『重复 0 到无穷多个的前一个 RE 字符』 ************************************** sed工具 sed 本身也是一个管线命令,将数据进行取代、删除、新增、截取特定行等等的功能 sed [-nefr] [动作] -n :使用安静(silent)模式。只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e :直接在指令列模式上进行 sed ?动作编辑; -f :直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作; -r :sed 的动作支持的是延伸型正则表示法的语法。 -i :直接修改读取?档案内容,而不是由屏幕输出。 动作说明: [n1,[n2]]function n1,n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行间进行的,则『 10,20[动作行为] 』 function 有底下这些: a :新增,a 的后面可以接字符串,而这些字符串会在新一行出现(目前的下一行)~ c :取代,c ?后面可以接字符串,这些字符串可以取代 n1,n2 间的行! d :删除,因为是删除啊,所以 d 后面通常不接任何; i:插入,i后面可以接字符串,而这些字符串会在新?一行出现(目前?上一行); p:打印,亦?将某个选择?数据印出。通常 p 会不参数 sed -n 一起运作~ s :取代,可以直接进行取代?工作哩!通常这个 s ?动作可以搭配正则表示法!1,20s/old/new/g 就是啦! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |