码迷,mamicode.com
首页 > 系统相关 > 详细

shell学习第三天——grep、sed、awk

时间:2016-08-10 22:54:54      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:sed grep awk

grep

以前我们用grep在一个文件中找出包含某些字符串的行,比如在头文件中找出符合某个模式(Pattern)的一类字符串,例如找出所有符合xxxx@xxxx.xxx模式的字符串(也就是email地址),要求x字符是可以是字母、数字、下划线、小数点。

字符类限定符(Character Class):如上例的x和y,他们在模式中表示一个字符,但是在取值范围是一类字符中的任意一个。

数量限定符(Quantifier):邮箱地址的每一部分可以有一个或者多个x字符。

位置限定符(Achor):描述各个字符类以及普通字符之间的位置关系,例如邮件地址分为三部分,用普通字符@和.隔开。

每一部分可以用字符类和数量限定符描述,为了表述位置关系,需要位置限定符。(有了三个概念,每次写正则表达式就不会乱了思绪)

exe

192.168.1.1
1234.234.04.5678
123.4234.045.678
abcde

执行的命令为:

[12][0-9]{0,2}\.[12][0-9]{0,2}\.[12][0-9]{0,2}‘ exe

执行结果为:

技术分享

我们知道C的变量和shell脚本变量的定义和使用方法很不同,表达能力也不相同,C变量有各种类型,而shell脚本变量都是字符串。

字符类

字符
含义
.
匹配任意一个字符
[]
匹配括号中的任意一个字符
-
在[]括号内表示字符范围
^
位于[]内的开头,匹配出括号中的字符之外的任意一个字符

具体使用例子

技术分享

数量限定符

字符
含义
举例

紧跟在它前面的单元匹配零次或一次
localhost bash]$ echo "hello" | grep -E --color ‘hell?‘
hello
+
紧跟在它前面的单元应匹配一次或多次
[lh@localhost bash]$ echo "helloooo" | grep -E --color ‘hello+‘
helloooo

*
紧跟它前面的单元应匹配零次或多次
[lh@localhost bash]$ echo "helloooo" | grep -E --color ‘hello*‘
helloooo
[lh@localhost bash]$ echo "helloooo" | grep -E --color ‘helo*‘
helloooo

位置限定符

字符
含义
^
匹配行首的位置
$
匹配行末的位置
\<
匹配单词开头的位置
\>
匹配单词结尾的位置
\b
匹配单词开头或结尾的位置
\B
匹配单词开头和结尾的位置

演示结果

技术分享

例子:

用下面的命令查找否和标准的IP号

 grep -E ‘[1,2][0-9]{0,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}‘ exe

寻找否合标准的手机号

 grep -E ‘1[34578][0-9]{9}‘ exe

寻找否和标准的邮箱号

grep -E ‘[123456789][0-9]{4,11}@qq\.com$‘






shell学习第三天——grep、sed、awk

标签:sed grep awk

原文地址:http://10798301.blog.51cto.com/10788301/1836684

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!