shell及正则表达式

shell 表达式

-d file  是否存在而且为目录

-f file    文件是否存在,且为普通文件

-w file    文件是否存在且可写

-s file    文件是否存在且非空

-n string    字符串长度非0

string1=string2    字符串相等

-eq     等于

-gt      大于

-lt       小于

-e  file       文件是否存在

-r   file       文件是否存在且可读

-x   file        文件是否存在且可执行

-h   file        文件是否为链接文件

-z   string     字符串长度为0

string1!=string2   字符串不等

-ge  大于或等于

-le    小于或等于

-ne    不等于

单引号

echo ‘$HOME‘

$HOME

echo "$HOME"

/root

echo "\$HOME"

转义

echo "abc `date +%D`"

abc 12/07/16

echo "abc $(date +%D)"

abc 12/07/16

正则表达式

.    匹配任意单个字符

*    匹配前一个字符出现0次或多次

.*     匹配任意多个任意字符串

[]    匹配集合中任意单个字符

[x-y]    匹配连续的字串范围

^    匹配字串开头

$    匹配字串结尾

[^]    匹配否定,对括号中的集合取反

\       匹配转义后的字串

\{n,m\}    匹配前一个字符重复n到m次

\{n,\}    匹配前一个字符至少n次

\{n\}    匹配前一个字符串重复n次

\(\)       将\(与\)之间的内容存储在"保留空间",最大存储9个

\n        同过\1至\9调用保留空间中的内容

{n,m}   等同于\{n,m\}

+            匹配前一个字符出现一次或多次

?            匹配前一个字符出现一次或0次

|            逻辑或,匹配前或后字串

()            匹配正则集合

eg:
grep :..0: passwd

grep 00* passwd

grep o[oa]t passwd

grep [0-9] passwd

grep ^root passwd

grep bash$ passwd

grep sbin/[^t] passwd

grep ‘0\{1,2\}‘ passwd

grep "\(root\)\(:\).*\2\1" passwd

grep ^$ passwd

grep -v ^$ passwd

时间: 2024-10-25 13:17:49

shell及正则表达式的相关文章

shell中正则表达式元字符

'.'    匹配任一字符 '*'   指定*前的字符可以连续重复使用任意次 '^'   字符串开头 '$'   字符串结尾 '.*'   任意数量的字符 '\'     转义字符 '[...]' 匹配任一字符 '[^...]' 不匹配任一字符,取反 '\(....\)'  标记匹配字符,后续通过转义序列进行引用,例如\(grep\).*\1,匹配2个grep中间带有任意数目的字符 '\n'  重复在\(...\) 内的第n个模式 x\{m,n\} 区间表达式,匹配x字符出现的次数区间.x\{n

Shell 编程 正则表达式

本篇主要写一些shell脚本正则表达式的使用基础. 概述 正则表达式分为基础正则表达式(Regular Expression)与扩展正则表达式(Extended Regular Expression). 它不是一个工具程序,而是一个字符串处理的标准依据,是使用单个字符串搜索.匹配一系列符合某个语法规则的字符串. 它由普通字符(a~z)以及特殊字符(元字符)组成. linux 文本处理工具 文本处理工具 基础正则表达式 扩展正则表达式 vi编辑器 支持 / grep 支持 / egrep 支持 支

shell 脚本-正则表达式

字符类 (Character Class):如上例的x 和y,它们在模式中表示一个字符 ,但是取值范围是 一类字 符中的任意一个. 数量限定符 (Quantifier): 邮件地址的每一部分可以有一个或多个 x字符 ,IP地址的每一部 分 可以有 1-3个y 字符 位置限定符 (Anchor):描述各种字符类以及普通字符之间的位置关系,例如邮件地址分三 部分,用普通字符 @和 .隔 开 ,IP地址分四部分 ,用 .隔开 ,每一部分都可以用字符类和数量限定符 描述.为了表示位置关系 ,需要位置限定

Linux学习-shell利用正则表达式验证邮箱合法性

引文:在今天这个时代,Email已经成为一种重要的通信方式.给导师发邮件,学术研究之间的交流,etc.常常用到Email,然而Email的验证却有点小难度,下面给出一个在Linux下使用shell脚本编写的一个实例. linux中将正则表达式和sed.gawk结合起来,功能非常强大.我说的是真的,没骗你的,好好学吧. 邮箱验证 Email地址的基本格式为: username@hostname 1.username部分模式匹配 username的值可以用字符数子字符以及以下特殊字符: 点号 单破折

Shell 与正则表达式part1

1.什么是shell? shell代表两个层面的意思,一个是命令解释器,比如:BASH,另外一个是shell脚本(利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的.) 2.通配符是被shell解释的,由shell 负责预先先解析后,将处理结果传给命令行.  通配符------>用shell来解释的 3.元字符是被shell解释的. 4.正则表达式是由命令解释的.   g

Linux学习笔记:Shell基础正则表达式

Shell中经常用到正则表达式的命令包括grep.sed.awk 用于测试的文件内容 [[email protected] ~]# vi testfile Current Network Status Last Updated: Mon Feb 15 10:55:06 CST 2016 Updated every 90 seconds Nagios Core 4.1.1 - www.nagios.org Logged in as admin I like google It's Google, 

shell编程-正则表达式

1.正则表达式是什么 它主要用于字符串的模式分割,匹配,查找及替换操作. 2.正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则包含匹配.grep,awk,sed等命令可以支持正则表达式. 通配符用来匹配符合条件的文件名,通配符是完全匹配.ls ,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符进行匹配了. 3.基础正则表达式 .相当于通配符的? [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} [0-9]\{1,3\}\.[0-9]\

Linux Shell编程 - 正则表达式

一.基础正则表达式 1.正则表达式:正则表达式是用来在文件中匹配符号条件的字符串,正则是包含匹配 grep.awk.sed等命令可以支持正则表达式. 2.通配符:用来匹配符合条件的文件名,通配符是完全匹配.ls.find.cp这些命令不之处正则表达式, 所以只能使用 shell 自己的通配符来进行匹配了. 3.基础正则表达式

Shell基本正则表达式和扩展正则表达式

BRE和ERE的区别 基本正则表达式(BRE)和扩展正则表达式(ERE)的区别仅仅是元字符(meta charactor)的区别而已. BRE: 只有^$.*[]是元字符 ERE: ^$.[]*+(){}?|都是元字符 BRE和ERE的元字符 参考:Shell正则表达式 示例 $echo "abcdefg" | grep 'a.+g' #不匹配任何字符串 $echo "abcdefg" | grep 'a.\+g' #匹配整个字符串 $echo "abcd