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. Fortran与C混合编程(转自Ubuntu)

    Fortran与C混合编程 由于 GNU 的 Fortran 和 C 语言二者的函数彼此可以直接相互调用,所以混合编程可以非常容易地实现.只要你足够仔细,确保函数调用时传递的参数类型正确,函数就可以在 ...

  2. Linux学习总结(十三)—— CentOS用户组管理:创建用户组、修改用户组、删除用户组

    文章首发于[博客园-陈树义],请尊重原创保留原文链接. 在Linux系统里,有两个系统文件与用户组密切相关,它们分别是:/etc/group./etc/gshadow. /etc/group:存储了用 ...

  3. 一些方便的bash命令

    1.文件名大小写转换: (1)大写转小写: ls | awk '{printf("mv %s %s\n", $0, tolower($0))|"sh"}' (2 ...

  4. windows管理命令

    执行msi程序 msiexec /package mysql-installer-community-5.7.18.0.msi rem 管理员DOS窗口执行这个命令,开始卸载mysql 杀死进程 ta ...

  5. javaScript系列:JSON详解

    JSON详解   JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交 ...

  6. fzu1969 GCD Extreme 类似于uva10561

    Description Given the value of N, you will have to find the value of G. The meaning of G is given in ...

  7. 谈谈分布式版本管理工具Git

    一.主流的版本管理工具 目前在企业中比较主流的版本管理工具有:GIT.SVN.CVS等等. 二.什么是Git? Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.是 L ...

  8. [2013-07-22]varnish-cache 安装配置及体验笔记

    varnish安装 ubuntu12安装参考 其他系统参考 如果选择了直接从源安装的方式的话,就不要自己去编译了,以免出现意外(悲剧的我,varnishlog 有点问题,之前先编译安装了,再从源安装, ...

  9. C/C++资料网站

    1.C语言基础知识讲解 http://c-faq-chn.sourceforge.net/ccfaq/node1.html 2.C++参考手册中文版 http://zh.cppreference.co ...

  10. 从服务器端获取列和数据动态创建Ext.grid.EditorGridPanel

    1.添加列的方法 var addColumn = function(){ this.fields = ''; this.columns = ''; this.addColumns=function(n ...