- 对PATH环境变量中定义的目录里的文件进行计数,首先要将PATH变量解析成单独的目录名;但是PATH中的每个路径是用冒号分隔,要获取可在脚本中使用的命令列表,就必须用空格来替换冒号,
echo $PATH | sed 's/:/ /g'
;分离出目录之后,可以使用for循环来遍历每个目录;一旦获取了单个目录,就可以使用ls命令来列出每个目录中的文件,并用另一个for语句来遍历每个文件,为文件计数器增值;
- 数据输入表单通常会要求填入电话号码,在美国,电话号码有这几种形式:
(123)456-7890;(123) 456-7890;123-456-7890;123.456.7890
;电话号码中可能有也可能没有左括号可以这样写:^\(?
,脱字符用来表明数据的开始,由于左圆括号是个特殊字符,必须使用转义字符将其转义,问号表明左括号可能出现,也可能不出现;紧接着是三位区号,在美国,区号已数字2开始(没有以0或1开始的区号),最大可达到9,要匹配区号可以使用:[2-9][0-9]{2}
,这要求第一个字符是2~9的数字,后跟的任意两位数,在区号后面,收尾的右圆括号可能存在也可能不存在:\)?
;在区号后可能存在:有一个空格,没有空格,有一条单破折号,或一个点,可以使用管道符号并用圆括号进行分组:(| |-|\.)
,第一个管道符号紧跟在左圆括号后,是为了说明没有空格的情况;接下来是三位电话交换机号码:[0~9]{3}
;在电话交换机号码后,必须匹配一个空格、单破折号、或一个点:( |-|\.)
;最后,必须在字符串尾部匹配4位本地电话分机号:[0~9]{4}$
;由以上分析完整的模式是:^\(?[2-9][0-9]{2}\)?(| |-|\.)[0-9]{3}( |-|\.)[0-9]{4}$
;
- 也可以将电话号码放进文件中,然后重定向到test1脚本中来过滤掉无效的号码:
- 邮件地址格式:
username@hostname
;username值可用字母数字字符以及特殊字符点号、单破折号、加号、下划线;在有效的邮件用户名中,这些字符可能以任意组合形式出现,邮件地址的hostname部分由一个或多个域名和一个服务器名组成,服务器名和域名也必须遵循严格的命名规则,只允许字母数字字符以及以下特殊字符:点号、下划线;服务器名和域名都用点分隔,先指定服务器名,紧接着指定了域名,最后在后面不带点号的顶级域名;用户名中可以有多个有效字符:^([a-zA-Z0-9_\-\.\+]+)@
,这个分组指定了用户名中允许的字符,加号表明必须有至少一个字符,下一个字符很明显是@;hostname模式使用同样的方法来匹配服务器名和子域名:([a-zA-Z0-9_\-\.]+)
,这个模式可以匹配文本;对于顶级域名,有一些特殊的规则,顶级域名只能是字母字符,必须不少于两个字符(国家和地区代码中使用),并且长度上不得超过五个字符,下面是顶级域名用的正则表达式模式:\.([a-zA-Z]{2,5})$
;将整个模式放在一起会生成:^([a-zA-Z0-9_\-\.\+]+)@([a-zA-Z0-9_\-\.]+)\.([A-Za-z]{2,5})$
;