1、计算目录文件

#!/bin/bash
mypath=`echo $PATH | sed 's/:/ /g'`#注意` ` 和 ‘ ’
count=
for directory in $mypath
do
check=`ls $directory`
for item in $check
do
count=$[ $count + ]#注意空格
done
echo "$directory -$count"
count=
done

2、验证电话号码

显示电话号码有以下几种常用的方法:

(123)456-7890

(123) 456-7890

123-456-7890

123.456.7890

这样,用户输入他们的电话号码的方法就有4中,正则表达式必须满足所有情形。

构建正则表达式时,最好从左边开始,构建匹配可能遇到的全部字符的模式。在本例中,第一件事是电话号码中可能有也可能没有一个左圆括号。这个字符可以使用下面的模式来匹配:

^\(?

使用脱字符(^)指出数据开头。由于左圆括号是一个特殊字符,所以必须将它转义为普通字符使用。问号表示左圆括号可以出现、也可以不出现在匹配的数据中。

接下来3位数字的地区代码。在美国,地区代码以数字2开始(无0或1),最大可以到9.为匹配地区代码,可以使用模式:

[2-9][0-9]{2}

在地区代码之后,结束右括号可以存在也可以不存在:

\)?

在地区代码之后可以是一个空格、没有空格、短划线或圆点。可以使用字符组合以及管道符号组合它们:

(| |-|\.)

第一个管道符号立即出现在圆括号之后,以匹配没有空格的情况。对于圆点,必须使用转义字符;否则,就会取其匹配任意字符的特殊含义。

再接下来是3位数字的交换号码:

[0-9]{3}

在电话交换码之后,必须匹配一个空格、破折号或点字符:

( |-|\.)

然后,结束整个验证过程,必须匹配字符串尾部、4位数字的本地电话扩展码:

[0-9]{4}$

将整个模式放在一起,得到:

^\(?[2-9][0-9]{2}\)?(| |-|\.)[0-9]{3}( |-|\.)[0-9]{4}$

在gawk程序中使用正则表达式表示间隔时,必须使用--re-interval命令行选项,否则就得不到正确的结果。

gawk --re-interval '/^\(?[2-9][0-9]{2}\)?(| |-|\.)[0-9]{3}( |-|\.)[0-9]{4}$/{print $0}'

3、解析电子邮件地址

电子邮件地址的基本形式为:

username@hostname

username的值可以使用任意字母数字,以及下面几个特殊字符:

圆点、短划线、加号、下划线。

在有效的电子邮件用户ID中,这些字符可以任意形式的组合出现。电子邮件地址的hostname部分由一个或多个域名和服务器名组成。服务器和域名也必须遵守严格的命名规则,仅允许字母数字字符以及下面的特殊字符:

圆点、下划线

服务器和域名之间分别用圆点隔开,且先指定服务器名,然后指定子域名,最后是没有后缀圆点的顶级域名。

从左边开始设计正则表达式模式。用户名可以有多个合法字符。

^([a-zA-Z0-9_\-\.\+]+)@

这样的组合可以指定用户名中允许的字符,加号表示要存在至少一个字符。下一个字符显然应该是@。

主机名模式使用相同的方法匹配服务器名和子域名:

([a-zA-Z0-9_\-\.]+)

这个模式可以匹配文本:

server

server.subdomain

server.sbudomain.subdomain

对于顶级域名有特殊的规则。顶级域名只能是字母字符,并且不能少于两个字符且长度不能超过5个字符。用于顶级域名的正则表达式为:

\.([a-zA-Z]{2,5})$

将整个模式组合在一起得到:

^([a-zA-Z0-9_\-\.\+]+)@(a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$

shell(sed/gawk)脚本(计算目录文件/验证电话号码/解析电子邮件地址)的更多相关文章

  1. SQL Server 中执行Shell脚本计算本地文件的内容大小

    SQL Server 数据库中除了能执行基本的SQL语句外,也可以执行Shell脚本.默认安装后,SQL中的Shell脚本的功能是关闭的,需要手动打开, 执行以下脚本即可打开该功能. -- 允许配置高 ...

  2. PHP正则表达式 验证电子邮件地址

    我们最经常遇到的验证,就是电子邮件地址验证.网站上常见.各种网页脚本也都常用“正则表达式”(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法.有的还能分解出用户名和 ...

  3. C++11标准 STL正则表达式 验证电子邮件地址

    转自:http://www.cnblogs.com/yejianfei/archive/2012/10/07/2713715.html 我们最经常遇到的验证,就是电子邮件地址验证.网站上常见.各种网页 ...

  4. js验证电话号码的正则表达式

    在做程序时遇到js验证电话号码的问题,使用正则表达式来操作很简单的.一起来看一下吧. 1,这种是比较简单的验证号码: 电话号码只能包含”(“.“)”.“-”和数字 <input   type=t ...

  5. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  6. Shell基础(五):sed基本用法、使用sed修改系统配置、sed多行文本处理、sed综合脚本应用

    一.sed基本用法 目标: 本案例要求熟悉sed命令的p.d.s等常见操作,并结合正则表达式,完成以下任务: 1> 删除文件中每行的第二个.最后一个字符    2> 将文件中每行的第一个. ...

  7. linux下shell脚本执行jar文件

    最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...

  8. Mac下通过shell脚本修改properties文件

    通过shell脚本替换属性文件中的某行记录 假设有如下属性文件 demo.properties user.name=test user.password=123456 ................ ...

  9. 通过Shell脚本读取properties文件中的参数时遇到\r换行符的问题

    今天在编写微服务程序启动脚本的时候,遇到一个比较奇葩的问题,下面给出具体描述: 目标:通过读取maven插件打包时生成的pom.properties文件,获取里面的应用名称和应用版本号,然后拼接得到s ...

随机推荐

  1. Jsp敏感词过滤

    Jsp敏感词过滤 大部分论坛.网站等,为了方便管理,都进行了关于敏感词的设定. 在多数网站,敏感词一般是指带有敏感政治倾向(或反执政党倾向).暴力倾向.不健康色彩的词或不文明语,也有一些网站根据自身实 ...

  2. 利用intellijidea创建maven多模块项目

    一.项目结构 multi-module-PRoject是主工程,里面包含两个模块(Module): web-app是应用层,用于界面展示,依赖于web-service参的服务. web-service ...

  3. noi2015 day1 T2软件包管理器

    noi2015 软件包管理器 Description Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软 ...

  4. 伪验证码(含随机验证码方法)js+css

    HTML----------------------------------------------<!DOCTYPE html><html><head><m ...

  5. apache-DOS

    对DSO的理解还不是特别深刻,所以把自己查来的资料整理一下并想就此作一个总结.暂时先把资料堆到blog里面了,有时间再整理总结.   一.以下源于<Apache HTTP Server Vers ...

  6. 基于spring mvc的图片验证码实现

    本文实现基于spring mvc的图片验证码,分后台代码和前端页面的展现以及验证码的验证. 首看后台实现代码: @RequestMapping({"authCode"}) publ ...

  7. 【windows】常用快捷键

    浏览器 ctrl shift del 清除网页缓存 文件系统 win+e 打开文件窗口 win+r 运行命令窗口 win+l 锁定桌面 win+m 最小化窗口 ctrl+shift +n 创建文件夹

  8. 这可能是新手最容易入门的JVM讲解(不过是一场恋爱)

    作者:请叫我红领巾,转载请注明出处http://www.cnblogs.com/xxzhuang/p/7453746.html 一.写在前面 首先,本篇文章并没有涉及原理,而是在笔者撸了<深入理 ...

  9. hibernate的基本配置

    1   Hibernate是一个非侵入式的ORMapping的框架. 2   Hibernate是一个能够将JAVA对象  通过   映射关系    映射到   关系型数据库的  这样一个框架 Hib ...

  10. webstom破解

    链接:http://pan.baidu.com/s/1dFOpj1n 密码:rsfs