shell 脚本学习指南

// 最近在看这本书,这个笔记会选择的记录一些东西。:)
//
//
/**
 * 正则表达式
 */
BRE--Basic Regular Expressions----grep
ERE--Extended Regular Expressions----egrep
//
推荐用 grep -E 代替 egrep;grep -F 代替 fgrep
//
// BRG 正则的优先级, 由高到底
//----------------------------------------------------
[..] [==] [::]                  用于字符排序的方括号符号
/metacharacter                  转义的 meta 字符
[]                              方括号表达式
/(/)  /digit                    子表达式于向后引用
*  /{/}                         前置单个字符重现的正则表达式
无符号(no symbol)                连续字符
^  $                            锚点(Anchors)
//----------------------------------------------------
//---------------//
// ERG 正则的优先级, 由高到底
//----------------------------------------------------
[. .] [= =] [: :]               用于字符对应的方括号符号
/metacharacter                  转移的 meta 字符
[]                              方括号表达式
()                              分组
* + ? {}                        重复前置的表达式
无符号(no symbol)                连续字符
^ $                             锚点(Anchors)
|                               交替(Alternation)
//----------------------------------------------------
^hello|world$         匹配字符串的起始处有 hello 或 字符串的结尾处有 world
^(hello|world)$       只匹配 hello 或者 world
//
// BRE 和 ERE 的一个区别:
在 ERE 中,运算符(* ? + {m,n})是被应用到“前置的正则表达式“,而不仅是前面单个字符。这是因为有((..))提供分组功能
例如:(why)+ 匹配于一个或连续出重复的多个 why
-----摘抄自 info sed
The only difference between basic and extended regular expressions is in
the behavior of a few characters: `?', `+', parentheses, and braces
(`{}').  While basic regular expressions require these to be escaped if
you want them to behave as special characters, when using extended
regular expressions you must escape them if you want them _to match a
literal character_.
-----说明
BRE                      ERE
*                         *
/+                        +
/?                        ?
/{n,m/}                   {n,m}
/( /)                     ( )
-----
//--
((read|write)[[:space:]]*)+
说明:
* 表示匹配前面单个空格字符 0 次或多次
+ 表示匹配前面括号表达式 1 次或多次,这个括号表达式是可以变化的(这个括号表达式可以匹配多中形式)
可以匹配
myhere readwriteread hello world 中的 readwriteread
myhere read write read hello world 中的 read write read
//--
//

你可能感兴趣的:(shell,正则表达式,脚本,basic,character,behavior)