[Linux] Regular Expression
正则表达式符号表示
[: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:] | 标点符号,即: " ' ? ! ; : # $ ... |
[:upper:] | 大写字符,A-Z |
[:space:] | 任何会产生空白的字符,包括空格键,[Tab],CR等等 |
[:xdigit:] | 16位进制的数字类型,包括0-9,A-F,a-f的数字与字符 |
RE字符 | 意义与范例 |
^word |
意义:待搜寻的字符串word在行首 范例:搜寻行首为#开始的那一行,并列出行号 grep -n '^#' a.txt |
word¥ |
意义:带搜寻的字符串word在行尾 范例:将行尾为!的那一行打印出来,并列出行号 grep -n '!$' a.txt |
. |
意义:代表【一定有一个任意字符】的字符 范例:搜寻的字符串可以是(eve)(eae)(eee)(e e),但不能仅有(ee)!亦即e与e中间一定仅有一个字符 grep -n 'e.e' a.txt |
\ |
意义:转义字符,将特殊符号的特殊意义去除 范例:搜寻含有单引号‘的那一行 grep -n \' a.txt |
* |
意义:重复零个到无穷多个的前一个RE字符 范例:找出含有(es)(ess)(esss)等等的字符串,注意,因为*可以是0个,所以es也是符合带搜寻字符串。另外,因为*为重复【前一个RE字符】的符号,因此,在*之前必须要紧接着一个RE字符,例如任意字符串为【。*】 grep -n 'ess*' a.txt |
[list] |
意义:字符集合的RE字符,里面列出想要获取的字符 范例:搜寻含有gl或gd的那一行,需要特别注意的是,在[]当中【谨代表一个待搜寻的字符】例如【a[afl]y】代表搜寻的字符串可以是aay, afy, aly即[afl]代表a或f或l的意思 grep -n 'g[ld]' a.txt |
[n1-n2] |
意义:字符集合的RE字符,里面列出想要获取的字符范围 范例:搜寻含有任意数字的那一行,需特别注意,在字符集合[]中的减号-是有特殊意义的,他代表两个字符之间的所有连续字符!但这个连续与否与ASCII编码有关,因此,你的编码需要在设定正确 grep -n '[A-Z] a.txt |
[^list] |
意义:字符集合的RE字符,里面列出不要的字符串或范围 范例:搜寻的字符串可以是(oog)(ood)但不能是(oot),那个^在[]内时,代表的意思是反向选择 grep -n 'oo[^t]' a.txt |
\{n,m\} |
意义:连续n到m个的【前一个RE字符】 意义:若为\{n\}则是连续n个的前一个RE字符 意义:若是\{n,\}则是连续n个以上的前一个RE字符 范例:在g与g之间有2个到3个的o存在的字符串,即(goog){gooog} grep -n 'go\{2,3\}g' a.txt |