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

grep

以前我们用grep在一个文件中找出包含某些字符串的行,比如在头文件中找出符合某个模式(Pattern)的一类字符串,例如找出所有符合[email protected]模式的字符串(也就是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
+ 紧跟在它前面的单元应匹配一次或多次 [[email protected] bash]$ echo "helloooo" | grep -E --color ‘hello+‘
helloooo
* 紧跟它前面的单元应匹配零次或多次 [[email protected] bash]$ echo "helloooo" | grep -E --color ‘hello*‘
helloooo
[[email protected] 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$‘

时间: 2024-09-26 23:07:40

shell学习第三天——grep、sed、awk的相关文章

LINUX 下 find grep sed awk 的常见基本用法特点

LINUX 下 find grep sed awk 的常见基本用法特点 只为让自己具有更高的水准,这就开始了长达6个月的小白进阶路! 这几天学习linux基础命令有点犯蒙,尤其是对文件查找这块.所有我想把一些我觉得常用的实用的参数项总结下来,大神勿喷哈... 不到之处请大家指教,小女子在此谢过了. 一.find:命令用于查找文件系统中指定的文件,其命令格式为: 1.find pathname -options [ -print  -exec  -ok ... ] (1)find 命令的参数: p

[CentOS 7系列]grep/sed/awk实战

最近准备和CoreSite - Any2 California接入商建立网络BGP邻居关系.从peeringdb (https://www.peeringdb.com/ix/142)上找到了所有接入商的信息,但是转移信息到本地不是很方便,需要进行多次文本调整,耗时较长.作为萌新,立马就想到近期学习的grep/sed/awk工具.于是就尝试处理数据. 1.下载页面内容 curl https://www.peeringdb.com/ix/142 > peering 将页面内容存入peering文件

grep,sed,awk与简单正则表达式应用

grep,sed,awk与简单正则表达式应用 这里使用的测试文件是linux /etc/passwd文件,最好是复制一份进行练习,方式对文件内容造成损坏.感觉还是要多练习才能很好的使用,习题这里就不贴了,网上一找一大把. grep:   -o 用作计算出现多少次字段  -c 打印符合要求的行数  -n 在输出符合要求的行的同时也打印行号  -v 打印不符合要求的行  -A 后跟一个数字 ps -A2表示打印符合要求的行及下面两行  -B 后跟一个数字 ps -B2表示打印符合要求的行及上面两行 

Linux三剑客grep/sed/awk

grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color=auto 或者 --color:表示对匹配到的文本着色显示 -i:在搜索的时候忽略大小写 -n:显示结果所在行号 -c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数 -o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行 -v:输出不带关键字的行(反向查询,反

Shell 学习(三)--流程控制

目录 Shell 学习(三)--流程控制 1 if判断 2 case 语句 3 for循环 4 while 循环 Shell 学习(三)--流程控制 1 if判断 基本语法 if [ 条件判断式 ];then 程序 fi 或者 if[ 条件判断式 ] then 程序 elif[ 条件判断式 ] then 程序 fi 注意事项:(1) [ 条件判断式 ],中括号和条件判断式之间必须要有空格.(2) 推荐使用第二种方式 ? 应用实例 案例: 编写一个shell程序,请输入参数,大于等于60,则输出"

grep sed awk

grep查找 结合正则表达式功能十分强大 grep [选项] 要查找内容(可用正则表达式) 在该文件中查找 常用选项: -c    只显示匹配的行 -h    查询多文件时不显示文件名 -I    不区分大小写 -l    查询多文件时,只输出匹配文件的文件名 -n    显示匹配的行及行号 -v    显示不包含匹配文本的所有行 实例1: 不想搜到ld前面有e的那行  使用反选项[^] 实例2: 除了连续编码使用[-]外,也可以用[:lower:]代替a-z  [[:lower:]]代替[a-

十七. 正则以及grep ,sed,awk的简单应用

一.正则表达式:/ / grep,sed,awk 都能解释正则表达式 正则表达式:把一些特殊符号组合到一起描述字符和字符串的方法.^ 以什么开头 grep '^root' /etc/passwd$ 以什么结尾 如能登入系统的所有用 grep 'bash$'/etc/passwd. 任意一个字符 grep '^b.n' /etc/passwd 过滤取到bin的.* 所有字符* 代表前面的字符有0个或者无穷个 grep 'b*' /+ 必须用egrep 或 egrep -E 'ab+'表示前面的字符

六、三剑客grep/sed/awk

6.1.正则表达式  正则表达式: 是一类字符所书写出的模式(pattern):元字符:不表示字符本身的意义,用于额外功能性的描述.  1) 基本正则表达式: BRE元字符: .: 匹配任意单个字符 [char]: 匹配指定范围内的任意单个字符 [^char]:匹配指定范围外的任意单个字符 字符集合: [:digit:], [:lower:], [:upper:], [:punct:], [:space:], [:alpha:], [:alnum:] 匹配次数( 贪婪模式) : *: 匹配其前面

find grep sed awk 详解

find :查找文件系统中指定的文件.可以按文件名(-name)  权限(-perm) 归属人 查找. find   要查找文件的路径   表达式 *通配符  可以添加在文件名的任意位置 常用的例子(具体可参照 find --help): find . -name 1.txt             在当前目录以及子目录下查找文件 1.txt find /tmp -name 1.txt       在/tmp目录以及子目录下查找文件 1.txt find /bin/ -perm 4755 | x