通配符&正则表达式&特殊符号总结

通配符

概念

bash操作环境下的功能。

*  代表0个到任意多个字符

?  代表一定有一个任意字符

[]  代表一定有[]中的一个字符。如g[a,b,c]d表示gad、gbd、gcd

[-]  代表一定有编码顺序内的所有字符。如g[0-9]d表示g0d、g1d、g2d...、g9d

[^]  代表反向选择。如g[^abc]d表示gdd、ged、gfd...、gzd、g0d、g1d...

特殊字符

#       注释

\        转义符号

|       管道符

;        命令分隔符,多条命令使用

~       用户主文件夹

$       变量前导符

&      作业控制,将作业变为后台

!        逻辑符--非

/        目录符号

>,>>  数据流重定向,输出导向

<,<<  数据流重定向,输入导向

‘‘  单引号,不具备变量置换的功能

""  双引号,具备变量置换的功能

``       里面为先执行的命令,等效于$()

()  中间为子shell的起始与结束

{}   中间为命令块的组合

   重要:

    ① !在[]中不是特殊字符。

      表示反向选择:

        [!a-z]         错误

        [^a-z]        正确

  ② $()与``的区别

      命令                                  结果

      echo \$\$                            $$

      echo `echo \\$\\$`               $$              ``中两个\表转义

      echo $(echo \$\$)               $$              $()中一个\表转义

正则表达式

概念

  正则表达式是通过一些特殊字符的排列,用以查找、替换、删除一行或多行文字字符串。简单地说,就是用在字符串的处理上面的一项“表达式”

语系对正则表达式的影响

  不同语系下,可能会得到不同的结果。

  如[a-z]在gb2312下得到aAbB...z,C语系下得到abc...z

  一般使用LANG=C语系

  以下符号可以避免编码问题

    特殊符号         代表意义

    [:alnum:]           代表英文大小写字符及数字,即 0-9, A-Z, a-z

    [:alpha:]            代表任何英文大小写字符,即 A-Z, a-z

    [:digit:]              代表数字而已,即 0-9

    [:lower:]            代表小写字符,即 a-z

    [:upper:]            代表大写字符,即 A-Z

    [:blank:]             代表空格键与 [Tab] 按键两者

    [:cntrl:]              代表键盘上面的控制按键,即包括 CR, LF, Tab, Del.. 等等

    [:graph:]            除了空格符 (空格键与 [Tab] 按键) 外的其他所有按键

    [:print:]              代表任何可以被打印出来的字符

    [:punct:]            代表标点符号 (punctuation symbol),即:" ‘ ? ! ; : # $

    [:space:]            任何会产生空白的字符,包括空格键, [Tab], CR 等等

    [:xdigit:]            代表 16 迚位的数字类型,因此包括: 0-9, A-F, a-f 的数字与字符

分类

依据不同的严谨程度分为基础正则表达式与扩展正则表达式

基础正则表达式的特殊字符

^word       word$       .                \               *               [list]

         [n1-n2]     [^list]        [^n1-n2]   \{n\}          \{n,m\}     \{n,\}

^word       待查找的字符串word在行首

找出所有注释行

grep –n ‘^#’ regular_express.txt

找出开头不是英文字母的行

grep –n ‘^[^[:alpha:]]’ regular_express.txt

word$       带查找的字符串word在行尾

找出!结尾的行

grep –n ‘\!$’ regular_express.txt

找出空白行

grep –n ‘^$’ regular_express.txt

.        代表一定有任意一个字符

找出包括g??d的字符串

grep –n ‘g..d’ regular_express.txt

\        转义字符,转义特殊字符

找出小数点.结尾的行

grep –n ‘\.$’ regular_express.txt

*       重复0个到无穷多个的前一个字符

找出包含o、oo、ooo、oooo...的行

grep –n ‘oo*’ regular_express.txt

找出g开头和g结尾的所有行,当中任意字符

grep –n ‘g*g’ regular_express.txt  错误

grep –n ‘g.*g’ regular_express.txt  正确

找出包含任意数字的行

grep –n ‘[:digit:][:digit:]*’ regular_express.txt

[list]          RE字符集合里面的任意一个字符

找到a或d开头的任意行

grep –n ‘^[ad]’ regular_express.txt

[n1-n2]     当前语系下RE字符集合的字符范围里面的任意一个字符

找到a或b或c或d开头的任意行

grep –n ‘^[a-d]’ regular_express.txt

[^list]        非RE字符集合

找到不是a或d开头的任意行

grep –n ‘^[^ad]’ regular_express.txt

注:b、c开头的会被列出

[^n1-n2]            非当前语系下RE字符集合的字符范围里面的任意一个字符

找到不是a或b或c或d开头的任意行

  grep –n ‘^[^a-d]’ regular_express.txt

\{n\}          连续n个前一个RE字符

找到go...od(100个o)

grep –n ‘go\{100\}d’ regular_express.txt

\{n,m\}     连续n到m个前一个RE字符

找到go...od(2到5个o)

grep –n ‘go\{2,5\}d’ regular_express.txt

\{n,\}                  连续n个以上前一个RE字符

找到go...od(5个o以上)

grep –n ‘go\{5,\}d’ regular_express.txt

扩展正则表达式的特殊字符

  +       ?       |       ()       ()+

   注:grep只支持基础正则表达式,grep –E(写作egrep)支持扩展正则表达式

+       重复一个或一个以上的前一个RE字符

找到god、good、goo...od

  egrep ‘go+d’ regular_express.txt

?       0个或1个前一个RE字符

找到gd、god

egrep ‘go?d’ regular_express.txt

|       用或的方式找出多个字符串(无规律)

找到glad、black、cache

egrep ‘glad|black|cache’ regular_express.txt

()       用组字符串找出多个字符串(有特定规律)

找到glad、good、geed

   egrep ‘g(la|oo|ee)d’ regular_express.txt

()+    找到有1个或多个重复组字符串

找到AxyzxyzxyzC

egrep ‘A(xyz)+C’ regular_express.txt

通配符和正则表达式的区别

  通配符是系统命令使用,一般用来匹配文件名或者什么的用在系统命令中;

  正则表达式是操作字符串,以行为单位来匹配字符串使用的。


符号


通配符


正则表达式


*


0个到任意多个字符


0个到任意多个前一个字符


?


一定有一个任意字符


0个或1个前一个字符

时间: 2024-10-16 10:41:40

通配符&正则表达式&特殊符号总结的相关文章

bash默认组合键,通配符及特殊符号

看鸟哥Linux私房菜中介绍的linux命令太多了,看一遍打一遍还是记不住,鉴于目前是在Windows下工作,又对于Linux系统的爱好,所以之后装了虚拟机在玩,由于本人比较笨,看一遍跟着书敲一遍还是记不住,所以就在此练练手,回忆一下看的内容,重新敲一遍加强记忆. 1.bash默认组合键: Ctrl+C ----------->终止目前的命令 Ctrl+D ----------->输入结束(EOF),例如邮件结束的时候 Ctrl+M ----------->就是Enter Ctrl+S

[Shell]Bash基本功能:通配符与特殊符号

/*------------------------------------------------------------------------------------------- @黑眼诗人 <www.chenwei.ws> --------------------------------------------------------------------------------------------*/ 一. 通配符: ?    匹配一个任意字符. *    匹配0个一个或多个

通配符与特殊符号

bash利用通配符,能够更好的处理数据,常用的通配符如下表: 符     号 意    义 * 代表0个到无穷多个任意字符 ? 代表一定有一个任意字符 [] 同样代表一定有一个在中括号内的字符(非任意字符).例如[abcd]代表一定有一个字符,可能是a,b,c,d这四个任何一个 [-] 若有减号在中括号内,代表在编码顺序内的所有字符.例如[0-9]代表0到9之间的所有数字,因为数字的语系编码是连续的 [^] 若中括号内的第一个字符为指数符号(^),那表示原向选泽,例如[^abc]代表一定有一个字

正则表达式常用符号说明

正则表达式常用符号说明: 1.    .是除换行以外的所有任意符号 2.    \s空白符号 3.    \S除空白符号以外的任意符号 4.    \w字母.数字.下划线 5.    \W 除字母.数字.下划线以外的其他任意符号 6.    \d 数字(0----9) 7.    \D 除数字以外的任意其他符号 8.    ^ 字符串开始 9.    $ 字符串结束 10. * 匹配0到无数次(匹配的是符号前边的字母或者数字等) 11. + 匹配1到无数次(匹配的是符号前边的字母或者数字等) 1

学习bash——通配符与特殊符号

一.通配符 这是bash操作环境中一个非常有用的功能,这让我们使用bash处理数据就更方便了. 常用通配符如下: 符号 意义 * 代表0个到无穷多个任意字符 ? 代表一个任意字符 [] 代表一定有一个在中括号内的字符(非任意字符) [-] 若有减号在中括号内,代表在编码顺序内的所有字符 [^] 若中括号内的第一个字符为^,则表示原向选择 [示例区] 预处理:LANG=C; alias ll=ls -al 题目1:找出/etc/下面以cron为开头的文件名 命令:ll -d /etc/cron*

正则表达式全部符号解

正则表达式全部符号解释 字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 "\" 而 "\(" 则匹配 "(". ^ 匹配输入字符串的开始位置.如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置. $ 匹配输入字符串的结束位置.如果设置了Re

Linux 通配符与特殊符号

通配符与特殊符号 特殊符号: 引号系列: $() 和 ` ` 运行里面的命令 ' ' 将里面的命令原封不动的输出 " "  将里面的特殊符号解析运行 重定向系列 : > 标准输出重定向 >> 标准输出追加重定向 2> 错误输出重定向 < 标准输入重定向 << 标准输入追加重定向 位置系列: ~ 当前用户家目录 .  当前目录 .. 当前目录的上一层目录 cd - 回到上一次所在的目录 su - 切换目录 判断系列 && 前一个命

正则表达式 特殊符号系列 通配符系列

1.1 重定向符号 输出重定向 先清空文件,追加> 追加输出重定向 追加< 输入重定向 与 xargs tr<< 追加输入重定向 cat 向一个文件追加多行.cat >>/oldboy/alex.txt<<EOFLove me, love my dog.Love Li, love li's dog.EOF1.2 表示位置的 .(点) 当前目录.. 当前目录上一级目录~ 当前用户的家目录1.3 特殊符号 注释 root用户的命令提示符$ 取变量的内容(命令行)

正则表达式全部符号解释

字符  描述 \  将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 "\" 而 "\(" 则匹配 "(". ^  匹配输入字符串的开始位置.如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置. $  匹配输入字符串的结束位置.如果设置了RegExp 对象的