Shell if中的正则表达式使用详解

由于工作需要对用户提交的数据进行验证,这是一个简单的日期正则验证实例,有需要了解的同学可参考。

shell中的if语句需要做一个正则判断,查了一下语法记录之。

DATEPATTERN="^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$"
if [[ "$STARTDATE" =~ $DATEPATTERN ]] && [[ $ENDDATE =~ $DATEPATTERN ]]; then :
else
echo "date format is invalid!"
exit;
fi

常用的正则表达式

if [[ "$file" =~ 'start' ]]
或if [[ "$file" =~ "start" ]]

例子:

#!/usr/bin/ksh
file="10start11.s"
if [[ "$file" =~ "start" ]]
then
echo "success"
else
echo "failed"
fi

只有bash才支持[[

ksh在test中应该不支持正则,用awk grep sed等工具实现吧

flag=`echo $file |awk '/start/'`
if [ "$flag" = "" ];then
echo "success"
else
echo "failed"
fi

Bourne Shell 的 if 语句和大部分编程语言一样 - 检测条件是否真实,如果条件为真,shell 会执行这个 if 语句指定的代码块,如果条件为假,shell 就会跳过 if 代码块,继续执行之后的代码。

if 语句的语法:

if[判断条件]
then
command1
command2
……..
last_command
fi
(0)

相关推荐

  • 详解Linux--shell脚本之正则表达式

    一.正则表达式的概念及特点: 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑.规定一些特殊语法表示字符类.数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式(Regular Expression). 给定一个正则表达式和另一个字符串,我们可以达到如下的目的: 1. 给定的字符串是否符合正则表达式的过滤逻辑(称作&q

  • linux shell 路径截取正则表达式

    最近写脚本,需要对脚本中函数传递的路径参数进行截取,发现了以下比较好用的方法,记录下: file=/dir1/dir2/dir3/my.file.txt 我们可以用${ }分别替换获得不同的值: ${file#*/}:拿掉第一条/及其左边的字串:dir1/dir2/dir3/my.file.txt ${file##*/}:拿掉最后一条/及其左边的字串:my.file.txt ${file#*.}:拿掉第一个.及其左边的字串:file.txt ${file##*.}:拿掉最后一个.及其左边的字串:

  • shell 正则表达式详细整理

    正则表达式的分类 1.基本的正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs) 2.扩展的正则表达式(Extended Regular Expression 又叫Extended RegEx 简称EREs) 3.Perl的正则表达式(Perl Regular Expression 又叫Perl RegEx 简称PREs) 具体的可以参考这篇文章:http://www.jb51.net/tools/shell_regex.html shell常

  • Linux Shell脚本的编程之正则表达式

    一 正则表达式与通配符 1 正则表达式是用在文件中匹配符合条件的字符串,正则是包含匹配,grep,awk,sed等命令可以支持正则表达式 2 通配符是用来匹配符合条件的文件名,通配符是完全匹配,ls,find,cp这些命令不支持正则表达式,所以只能用Shell自己的通配符来进行匹配了. 二 基础正则表达式 这里引用兄弟连的测试文本 1 * 前一个字符匹配0次或任意多次 grep "a*" test_rule.txt 匹配所有内容,包括空白行(由于*可以匹配0次) grep "

  • Shell正则表达式之grep、sed、awk实操笔记

    最近一直在研究shell脚本这块,刚好闲下来整了下自己手头上比较好的资料中的一些范例,以下是我整理的鸟哥私房菜里面正则表达式里面比较基础的一些语法详解,适合新手查阅. 首先先复制一段范例: 复制代码 代码如下: # vi regular_express.txt ------------------------------- "Open Source" is a good mechanism to develop programs. apple is my favorite food.

  • Shell脚本中通过正则表达式匹配IP地址

    在运维场景下,我们经常需要在服务器上用正则表达式来匹配IP地址. shell和其它编程语言一样,也可以使用正则分组捕获,不过不能使用 $1或\1这样的形式来捕获分组,可以通过数组${BASH_REMATCH}来获得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]} 下面以ip="121.0.2.2"为例,shell脚本代码如下(当然,你要做成更通用交互式的脚本,可以通过expect来实现): 复制代码 代码如下: #!/bin/bash ip="1

  • Shell正则表达式学习笔记

    正规表示法(或称为常规表示法)是透过一些特殊字符的排列,用以搜寻/取代/删除一列或多列文字字符串, 简单的说,正规表示法就是用在字符串的处理上面的一项『表示式』.正规表示法并不是一个工具程序, 而是一个字符串处理的标准依据,如果您想要以正规表示法的方式处理字符串,就得要使用支持正规表示法的工具程序才行, 这类的工具程序很多,例如 vi, sed, awk 等等. 一.正则表达式是什么? 正则表达式是用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分割.匹配.查找及替换操作. 二.

  • Shell正则表达式验证IP地址

    本机多个IP 复制代码 代码如下: ifconfig | awk '/inet/{print $2}' | awk -F: '{print $2}' 首先,先用这个来着 复制代码 代码如下: CheckIPAddress()        {         echo $1 > /tmp/tmpserverip         echo $1 |grep "^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$" >

  • Shell if中的正则表达式使用详解

    由于工作需要对用户提交的数据进行验证,这是一个简单的日期正则验证实例,有需要了解的同学可参考. shell中的if语句需要做一个正则判断,查了一下语法记录之. DATEPATTERN="^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$" if [[ "$STARTDATE" =~ $DATEPATTERN ]] && [[ $ENDDATE =~ $DATEPATTERN ]]; then : else echo "date

  • Linux 在Shell脚本中使用函数实例详解

    Linux 在Shell脚本中使用函数实例详解 Shell的函数 Shell程序也支持函数.函数能完成一特定的功能,可以重复调用这个函数. 函数格式如下: 函数名() { 函数体 } 函数调用方式: 函数名 参数列表 实例:编写一函数add求两个数的和,这两个数用位置参数传入,最后输出结果. root@ubuntu:/home/study# vi test3 #!/bin/bash add(){ a=$1; b=$2; z=`expr $a + $b`; echo "The sum is $z&

  • PHP中的正则表达式实例详解

    最近使用 PHP 写了一个应用,主要是正则表达式的处理,趁机系统性的学习了相应知识. 这篇文章的写作方式不是讲理论,而是通过具体的例子来了解正则,这样也更有实践性,在此基础上再去看正则表达式的基本概念会更有收获. 禁止分组的捕获 在正则中分组很有用,可以定义子模式,然后可以通过后向引用来引用分组的内容,但是有的时候仅仅想通过分组来进行范围定义,而不想被分组来捕获,通过一个例子就能明白: $str = "http://www.google.com"; $preg= "/http

  • javascript中的正则表达式使用详解

    [1]定义:正则又叫规则或模式,是一个强大的字符串匹配工具,在javascript中是一个对象 [2]特性: [2.1]贪婪性,匹配最长的 [2.2]懒惰性,不设置/g,则只匹配第1个 [3]两种写法: [3.1]perl写法(使用字面量形式): var expression = /pattern/flags; e.g. var pattern = /a/i;//匹配字符串中所有'a'的实例 [3.1.1]三个标志flags [a]g:表示全局模式(global) [b]i:表示不区分大小写(i

  • swift中自定义正则表达式运算符=~详解

    什么是正则表达式? 正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. swift 至今并没有在语言层面上支持正则表达式,可能在开发app时正则表达式使用的场景并不多. 封装 在 Cocoa 中我们可以使用 NSRegularExpression 来做

  • shell脚本中的正则表达式详解

    正则表达式的概念及特点: 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串", 这个"规则字符串"用来表达对字符串的一种过滤逻辑.规定一些特殊语法表示字符类.数量限定符和位置关系,然后用这些特殊语法和普 通字符一起表示一个模式,这就是正则表达式(Regular Expression). 给定一个正则表达式和另一个字符串,我们可以达到如下的目的: 1. 给定的字符串是否符合正则表达式的过滤逻辑(称作&q

  • java中正则表达式实例详解

    Java中正则表达式运用实例(参看java中正则表达式运用详解): 测试代码 package test; /** * 在String的matches()方法,split()方法中使用正则表达式. * @author fhd001 */ public class RegexTest { public static void main(String[] args) { /* * 普通字符 */ String str1 = "abc45abc345"; String[]arr1 = str1

  • javascript中正则表达式语法详解

    好久都没有写博客了,主要是太懒了,尤其是在阳春三月,风和日丽的日子,太阳暖暖的照在身上,真想美美的睡上一觉.就导致了这篇博客拖到现在才开始动笔,javascript的正则这一块也不是什么新的东西,主要是以前本人一遇到写正则的需求就开始头大,头疼,网上剽窃,东拼西凑,反正就是各种不适应,所以我打算系统的把正则表达式看一遍,一来是自己有所提升,这一块知识点的查漏补缺,二来是给大家分享一下.好了,下面我们直接进入主题: 正则是匹配字符串特定模式的一种表达式,官方是这样说的,但我的理解不外乎就是匹配字符

  • shell 里 awk print 的用法详解

    首先, 你需要先了解awk 的工作原理: 1.AWK读取输入文件一次一行. 2.对于每一行,它匹配在给定的顺序模式,如果匹配,执行相应的动作. 3.如果没有模式匹配,将执行任何行动. 4.在上面的语法,无论是搜索模式,或行动是可选的,但不能同时. 5.如果没有给出搜索模式,然后awk要执行每一行输入给定的行动. 6.如果没有给出动作,打印,这是默认的操作与模式相匹配的所有行. 7.空出的任何行动括号什么都不做.它不会执行默认的打印操作. 8.中的每个行动的声明应该用分号分隔.让我们创建emplo

  • Linux正则表达式特性详解及BRE与ERE的异同点

    Linux正则表达式(Regular Expression)主要遵从POSIX BRE或者POSIX ERE标准.什么是POSIX呢,POSIX Portable Operating System Interface 可移植操作系统接口ERE是BRE的扩展版本,具体更强的处理能力,并增加了一些元字符(metacharactor). BRE主要的能力集有: 1) 普通字符(Literal text),如a,b,c等 2)非打印字符,包括TAB,回车,换行,回车换行(WINDOWS) 3)任意字符.

随机推荐