Shell中的正则表达式

1 什么是正则表达式:

 

1. 一个字符集.
这里的字符集里的字符表示的就是它们字面上的意思.正则表达式最简单的情况就是仅仅由字符集组成,而没有其他的元字符.
2. 锚.
一个锚指明了正则表达式在一行文本中要匹配的位置,例如^和$就是锚.
3. 修饰符
它们用于展开或缩小(即是修改了)正则表达式匹配文本行的范围.修饰符包括了星号.括号和反斜杠符号.

 

正则表达是的主要作用是用来文本搜索和字串操作.一个正则表达式匹配一个字符或是一串字
符--完整的一串字符或是另外一个字符串的子串.

 

星号 -- * -- 匹配前一个字符的任意多次(包括零次).

点 -- . -- 匹配除了新行符之外的任意一个字符. [1]

脱字符 -- ^ -- 匹配一行的开头,但依赖于上下文环境,可能在正则表达式中表示否定一个字符集的意思.
美元符 -- $ -- 在正则表达式中匹配行尾."^$" 匹配空行.
方括号 -- [...] -- 在正则表达式中表示匹配括号中的一个字符."[xyz]" 匹配字符x, y, 或z.

反斜杠字符 -- / -- 转义(escapes) 一个特殊的字符,使这个字符表示原来字面上的意思."/$"表示了原来的字面意思"$",而不是在正则表达式中表达的匹配行尾的意思.同样,"//"也被解释成了字面上的意思"/".


转义(escape)"尖角号" -- /<.../> -- 用于表示单词的边界.尖角号必须被转义,因为不这样做的话它们就表示单纯的字面意思而已."/<the/>" 匹配单词"the",但不匹配"them", "there", "other",等等.

 

问号 -- ? -- 匹配零或一个前面的字符. 它一般用于匹配单个字符.
加号 -- + -- 匹配一个或多个前面的字符.它的作用和*很相似,但唯一的区别是它不匹配零个字符的情况.

 

转义"大括号" -- /{ /} -- 指示前面正则表达式匹配的次数.
要转义是因为不转义的话大括号只是表示他们字面上的意思.这个用法只是技巧上的而不是基本正则表达式的内容.
"[0-9]/{5/}" 精确匹配5 个数字 (从 0 到 9 的数字).注意: 大括号不能在“经典”(不是POSIX 兼容)的正则表达式版本的awk 中使用. 然而, gawk 有一个选项--re-interval 来允许使用大括号(不必转义).

 

竖线 -- | -- "或"正则操作符用于匹配一组可选的字符.

 

 

shell 脚本也能启动他自已的子进程. 这些子shell(即子进程)使脚本因为效率而同时进行多个子任务执行时能做串行处理.
一般来说,脚本里的一个外部命令(external command)能生成(forks)出一个子进程,然而Bash 内建(builtin)的命令却不这样做,因此,内建命令比起外部的等价命令执行起来更快

 

圆括号里的命令列表
( 命令1; 命令2; 命令3; ... )
嵌在圆括号里的一列命令在一个子shell 里运行.
注意: 在子shell 里的变量不能被这段子shell 代码块之外外面的脚本访问.这些变量是不能被产生这个子shell 的父进程(parent process)存取的,实际上它们是局部变量(local variables).

 

################################Start
Script#######################################
1 #!/bin/bash
2 # allprofs.sh: 打印所有用户的配置文件
3
4 # 由 Heiner Steven 编写, 并由本书作者修改.
5
6 FILE=.bashrc # 在一般的脚本里,包含用户配置的文件是".profile".
7 #
8
9 for home in `awk -F: '{print $6}' /etc/passwd`
10 do
11 [ -d "$home" ] || continue # 如果没有家目录,跳过此次循环.
12 [ -r "$home" ] || continue # 如果目录没有读权限,跳过此次循环.
13 (cd $home; [ -e $FILE ] && less $FILE)
14 done
15
16 # 当脚本终止时,不必用'cd'命令返回原来的目录,
17 #+ 因为'cd $home'是在子shell 中发生的,不影响父shell.
18
19 exit 0
################################End
Script#########################################

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惹不起的程咬金

来都来了,不赏点银子么

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值