Loading... <p>Linux中有各种各样的字符,而且在不同环境和不同命令之下含义也不同</p> <p>作为新手,决定先归纳学到的符号,方便后面学习厘清它们之间的关系。</p> <p style="line-height: 1.5em"></p> <hr /> <p><strong>glob 简化了的正则表达式</strong></p> <p>bash默认通配符:</p> <p>?<span class="Apple-tab-span"> </span>:只匹配一个任意字符;</p> <p>*<span class="Apple-tab-span"> </span>:匹配零个或多个任意字符; </p> <p>[^]<span class="Apple-tab-span"> </span>:方括号及其中^中的取反</p> <p>[abc]:匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);</p> <p>如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。</p> <p></p> <hr /> <p><strong>grep基本正则表达式元字符:</strong></p> <p>.: 匹配任意单个字符;</p> <p>[]: 匹配指定范围内的任意单个字符</p> <p>[^]:匹配指定范围外的任意单个字符</p> <p>*:匹配前面的字符任意次;</p> <p>.*:任意长度的任意字符;</p> <p>\?:匹配其前面的字符0或1次;即前面的可有可无;</p> <p>\+:匹配其前面的字符至少1次;</p> <p>\{m\}:匹配前面的字符m次;</p> <p>\{m,n\}:匹配前面的字符至少m次,至多n次;</p> <p>\{0,n\}:匹配前面的字符至多n次;</p> <p>\{m,\}:匹配前面的字符至少m次;</p> <p>^:行首锚定;用于模式的最左侧;</p> <p>$:行尾锚定;用于模式的最右侧;</p> <p>\< 或 \b:词首锚定;用于单词模式的左侧;</p> <p>\> 或 \b:词尾锚定;用于单词模式的右侧;</p> <p>\<PATTERN\>:匹配整个单词;</p> <p>\(\):将一个或多个字符捆绑在一起,当作一个整体进行处理;</p> <hr /> <p><strong>egrep及扩展的正则表达式</strong></p> <p>egrep = grep -E</p> <p>扩展正则表达式的元字符:</p> <p>字符匹配:</p> <p>.</p> <p>[]</p> <p>[^]</p> <p><span class="Apple-tab-span"> </span></p> <p>*</p> <p>?: 0或1次;</p> <p>+:1次或多次;</p> <p>{m}:匹配m次;</p> <p>{m,n}:至少m,至多n次;</p> <p>^</p> <p>$</p> <p>\<, \b</p> <p>\>, \b</p> <p>()</p> <p>后向引用:\1, \2, …</p> <p></p> <hr /> <p>根据以上归纳,需要区分的符号</p> <p>glob和grep的*符号,前者直接任意字符,后者匹配前一个字符任意次数</p> <p>grep和egrep的?,+,{m,n},(),前者需要将这些字符转义,后者不需要</p> <hr /> <p>附其它一些bash符号说明</p> <p><span class="Apple-tab-span"> </span></p> <p>子字符类</p> <p>[:alpha:]<span class="Apple-tab-span"> </span></p> <p>匹配当前归类中的大写和小写字母字符。例如,'[0-9]{3}[[:alpha:]]{2}' 匹配三个数字,后跟两个字母。</p> <p>[:alnum:]<span class="Apple-tab-span"> </span></p> <p>匹配当前归类中的数字、大写和小写字母字符。例如,'[[:alnum:]]+' 匹配含有一个或多个字母和数字的字符串。</p> <p>[:digit:]<span class="Apple-tab-span"> </span></p> <p>匹配当前归类中的数字。例如,'[[:digit:]-]+' 匹配含有一个或多个数字或横线的字符串。同样,'[^[:digit:]-]+' 匹配含有一个或多个不是数字或横线的字符的字符串。</p> <p>[:lower:]<span class="Apple-tab-span"> </span></p> <p>匹配当前归类中的小写字母字符。例如,'[[:lower:]]' 不匹配 A,因为 A 为大写。</p> <p>[:space:]<span class="Apple-tab-span"> </span></p> <p>匹配单个空格 (' ')。</p> <p>[:upper:]<span class="Apple-tab-span"> </span></p> <p>匹配当前归类中的大写字母字符。例如,'[[:upper:]ab]' 与以下其中一项匹配:任何大写字母、a 或 b。</p> <p>[:whitespace:]<span class="Apple-tab-span"> </span></p> <p>匹配一个空白字符,例如,空格、制表符、换页符和回车符。</p> <p>[:ascii:]<span class="Apple-tab-span"> </span></p> <p>匹配任何七位的 ASCII 字符(0 到 127 之间的顺序值)。</p> <p>[:blank:]<span class="Apple-tab-span"> </span></p> <p>匹配一个空白区或水平制表符。</p> <p>[[:blank:]] 等效于 [ \t]。</p> <p>[:cntrl:]<span class="Apple-tab-span"> </span></p> <p>匹配顺序值小于 32 或字符值为 127 的 ASCII 字符(控制字符)。控制字符包括换行符、换页符、退格符,等等。</p> <p>[:graph:]<span class="Apple-tab-span"> </span></p> <p>匹配打印字符。</p> <p>[[:graph:]] 等效于 [[:alnum:][:punct:]]。</p> <p>[:print:]<span class="Apple-tab-span"> </span></p> <p>匹配打印字符和空格。</p> <p>[[:print:]] 等效于 [[:graph:][:whitespace:]]。</p> <p>[:punct:]<span class="Apple-tab-span"> </span></p> <p>匹配其中一个字符: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~.</p> <p>[:punct:] 子字符类不能包括当前归类中可用的非 ASCII 标点字符。</p> <p>[:word:]<span class="Apple-tab-span"> </span></p> <p>匹配当前归类中的字母、数字或下划线字符。</p> <p>[[:word:]] 等效于 [[:alnum:]_]。</p> <p>[:xdigit:]<span class="Apple-tab-span"> </span></p> <p>匹配字符类 [0-9A-Fa-f] 中的字符。</p> <p><span class="Apple-tab-span"> </span></p> <p></p> <p></p> <p># 注释说明</p> <p></p> <p>$ 变量符号</p> <p>\ 转义字符 一般用在写很长的通配符上 我们可以把特殊字符或者通配符 转义成一般的字符</p> <p>; 连续命令执行分割符号,例子 cp /etc /tmp ;ls /tmp ;cd etc ;rm etc</p> <p>'' 反点号中间的先执行</p> <p>/ 目录符号,路径分割</p> <p>& 把作业放到后台去执行</p> <p>~ 用户的主文件夹</p> <p>!逻辑运算上的非</p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信