shell(sed/gawk)脚本(计算目录文件/验证电话号码/解析电子邮件地址)
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)脚本(计算目录文件/验证电话号码/解析电子邮件地址)的更多相关文章
- SQL Server 中执行Shell脚本计算本地文件的内容大小
SQL Server 数据库中除了能执行基本的SQL语句外,也可以执行Shell脚本.默认安装后,SQL中的Shell脚本的功能是关闭的,需要手动打开, 执行以下脚本即可打开该功能. -- 允许配置高 ...
- PHP正则表达式 验证电子邮件地址
我们最经常遇到的验证,就是电子邮件地址验证.网站上常见.各种网页脚本也都常用“正则表达式”(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法.有的还能分解出用户名和 ...
- C++11标准 STL正则表达式 验证电子邮件地址
转自:http://www.cnblogs.com/yejianfei/archive/2012/10/07/2713715.html 我们最经常遇到的验证,就是电子邮件地址验证.网站上常见.各种网页 ...
- js验证电话号码的正则表达式
在做程序时遇到js验证电话号码的问题,使用正则表达式来操作很简单的.一起来看一下吧. 1,这种是比较简单的验证号码: 电话号码只能包含”(“.“)”.“-”和数字 <input type=t ...
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件.目录属性 shell数组简单用法 $( ) 和$ ...
- Shell基础(五):sed基本用法、使用sed修改系统配置、sed多行文本处理、sed综合脚本应用
一.sed基本用法 目标: 本案例要求熟悉sed命令的p.d.s等常见操作,并结合正则表达式,完成以下任务: 1> 删除文件中每行的第二个.最后一个字符 2> 将文件中每行的第一个. ...
- linux下shell脚本执行jar文件
最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...
- Mac下通过shell脚本修改properties文件
通过shell脚本替换属性文件中的某行记录 假设有如下属性文件 demo.properties user.name=test user.password=123456 ................ ...
- 通过Shell脚本读取properties文件中的参数时遇到\r换行符的问题
今天在编写微服务程序启动脚本的时候,遇到一个比较奇葩的问题,下面给出具体描述: 目标:通过读取maven插件打包时生成的pom.properties文件,获取里面的应用名称和应用版本号,然后拼接得到s ...
随机推荐
- Openfire服务器和Spark客户端配置
一.Openfire服务器的配置 关于之前一直在进行的聊天app的项目,我们还没有完成,这次我们介绍一下,Openfire服务器的配置. 1.Openfire下载 Openfire下载地址:http: ...
- PACS发展历史
最先推动 PACS发展的动力来自于传统的相机厂家.这是因为当数字化浪潮到来的时候,他们首先就意识到这对他们的产品是一个不可逆转的巨大的冲击.他们当然有着自己的优势:对各个厂家的设备连接能力有着最为清楚 ...
- Clang之语法抽象语法树AST
语法分析器的任务是确定某个单词流是否能够与源语言的语法适配,即设定一个称之为上下文无关语言(context-free language)的语言集合,语法分析器建立一颗与(词法分析出的)输入单词流对应的 ...
- 系统引导器GRUB
系统引导器GRUB 理解/boot/grub/grub.conf 1 # grub.conf generated by anaconda 2 # 3 # Note that you do not ha ...
- windows server 2012 + sql server 2008 r2安装
windows server 2012 r2 里面安装 sql server 2008 r2 问题总结 前提是 windows server 2012 r2 已经安装完成 ,(仅仅是安装完成 啥服 ...
- C#设计模式(4)-抽象工厂模式
引言 上一篇介绍了设计模式中的简单工厂模式-C#设计模式(3)-工厂方法模式,本篇将介绍抽象工厂模式: 抽象工厂模式简介 抽象工厂模式(AbstractFactory):提供一个创建一系列相关或相互依 ...
- matlab-常用函数(2)
isempty(A) 功能解释 isempty()用来判断 一个矩阵是否为空矩阵,其用法相当于C语言中的"a==NULL". 当参数为空矩阵时,该函数返回逻辑值"1&qu ...
- django 5 form1
---------------------Form表单验证(用户请求验证+生成HTML标签) 示例:用户管理 a. 添加用户页面 - 显示HTML标签 - 提交:数据验证 - 成功之后保存 - 错误显 ...
- 最近找java实习面试被问到的东西总结(Java方向)
时间,就是这么很悄悄的溜走了将近两个年华,不知不觉的,研二了,作为一个一般学校的研究生,不知道该说自己是不学无术,还是说有过努力,反正,这两年里,有过坚持,有过堕落,这不,突然间,有种开窍的急迫感,寻 ...
- Oracle 的process和Session
Oracle 的process和Session 1.process 和session的概念:process:这个参数限制了能够连接到SGA的操作系统进程数(或者是Windows 系统中的线程数),这个 ...