linux----->shell高级编程----grep应用

1. 背景

在讲到shell编程时, 我们不得不提到正则表达式,  这个可以看似一门新的编程语言的"老家伙", 让我们很多刚入行的程序员来说又爱又恨, 爱因为它实在可以用最简短的语句写出强大的功能,  恨是因为它的语法与我们原来接触的任何一门高级编程语言来说都看似不似.  下面我们就开始主要来介绍正则

2. 正则分类

    • Basic正则:  出来的比较早, grep一般默认的就是Basic正则
    • Extended正则: 对Basic的扩展,   默认支持更多的转义字符

3. 基本语法

4. 数量限量符

5. 位置限定符

6. 其它特殊字符

grep

1. 作用

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

2. 参数

grep [options]

主要参数: linux下 grep --help可查看

-c:    只输出匹配行的计数

-i:    不区分大小写

-h:    查询多文件时不显示文件名

-l:    查询多文件时只输出包含匹配字符的文件名

-n:    显示匹配行级行号

-s:    不显示不存在或无匹配文件的错误信息

-v:    显示不包含匹配文本的所有行

--color=auto:    可以将找到的关键词部分加上颜色的显示

实战操作:

1、已知文件test.txt内容为[test][liyao][sea],请给出打 印test.txt内容时,不包含sea字符串的命令

[假设这个目录文件是存在/data/下]

方法一: grep -v "sea" /data/test.txt

方法一: cat /data/test.txt | grep -v "sea"

对比两方法, 方法二比方法一效率慢一些,   但专业一些.

时间: 2024-10-31 13:10:09

linux----->shell高级编程----grep应用的相关文章

Linux Shell 高级编程技巧4----几个常用的shell脚本例子

4.几个常用的shell脚本例子    4.0.在写脚本(同样适用在编程的时候),最好写好完善的注释    4.1.kill_processes.sh(一个杀死进程的脚本) #!/bin/bash current_PID=$$ ps -aux | grep "/usr/sbin/httpd" | grep -v "grep" | awk '{print $2}' > /tmp/${current_PID}.txt for pid in `cat /tmp/${

Linux Shell 高级编程技巧2----shell工具

2.shell工具    2.1.日志文件        简介            创建日志文件是很重要的,记录了重要的信息.一旦出现错误,这些信息对于我们排错是非常有用的:监控的信息也可以记录到日志文件        常用的日志文件的方法            以时间为标识的日志文件                例子 #!/bin/bash #当前的日期 current_date=`date "+%Y%m%d"` #今天的日志文件名 todaylog="log/${cu

Linux Shell 高级编程技巧3----运行级别脚本介绍

3.运行级别脚本介绍    3.1.运行级别        运行级别介绍:            0    关机            1    单用户模式            2    多用户模式,没有NFS服务            3    多用户模式            4    目前还没有使用            5    X windows 的启动模式            6    重启计算机        运行级别对应的目录(/etc/rcN.d,N是数字0.1.2...)

Linux Shell 高级编程技巧1---深入讨论(awk、<<)

1.深入讨论(awk.<<)    1.1.深入讨论awk        记录和域,模式和动作,正则表达式和元字符            基础教程中已经介绍        条件和逻辑操作符            <    小于            >=    大于等于            <=    小于等于            ==    等于            !=    不等于            ~    匹配正则表达式            !~    

Linux Shell脚本编程学习笔记和实战

http://www.1987.name/141.html shell基础 终端打印.算术运算.常用变量 Linux下搜索指定目录下特定字符串并高亮显示匹配关键词 从键盘或文件中获取标准输入 [read命令] 文件的描述符和重定向 数组.关联数组和别名使用 函数的定义.执行.传参和递归函数 条件测试操作与流程控制语句 获取时间日期格式和延时 [date.sleep命令] 内部字段分隔符IFS和脚本的调试DEBUG 显示.读取或拼接文件内容 [cat命令] 文件查找与打印文件列表 [find命令]

18道Shell高级编程企业实战题及参考答案(一)

Shell高级编程企业实战题参考解答 ########################################################################### 让我们一起感谢,本文内容答案完全来自老男孩教育的学生-张耀课前上机考试解答! ########################################################################### 目录: 1.监控MySQL主从同步... 1 2.批量创建文件及改名... 3

linux shell 高级批处理

在DOS中有个'批处理'文件,将多条命令写进一个叫.bat的批处理. 在linux 中,也可以做到,并且功能更强大,我写的批处理是在ubuntu 12.04 LTS 我所要做的就是将U盘中的图片移到电脑中. 以下是代码实现: sudo mount /dev/sdd1/ /media/ cp /media/helloworld/程序/*.bmp /home/xyx/ahah tar -zcPvf /home/xyx/ahah/PIC`date +%Y%m%d`.tar.gz /media/hell

Linux C高级编程——文件操作之系统调用

Linux C高级编程文件操作之系统调用 宗旨:技术的学习是有限的,分享的精神的无限的! 库函数是一些完成特定功能的函数,一般由某个标准组织制作发布,并形成一定的标准.使用库函数编写的函数一般可以应用于不同的平台而不需要做任何修改,具有很好的可移植性. 系统调用函数与操作系统直接相关,不同的操作系统所使用的系统调用可能不太一样,因此,如果两个操作系统差异很大,系统调用函数的可移植性就不高.例如windows采用的系统调用的应用程序不能直接在Linux下编译运行. 之所以使用系统调用是因为系统资源

Linux环境高级编程--介绍

从今天开始,将开启Linux环境高级编程(Advanced Programming Of Linux Enviroment)的学习笔记或者说总结,我将持续和大家分享自己的学习成果.本系列博客依托于lilin老师的课程,代码也基本上来自于课程的内容,在得到老师的同意和允许情况,我在github上新建了一个仓库和大家分享代码,仓库名称为APLE .有任何建议或者想法的可以一起参加进来改进代码. 首先,我们介绍下系列博客的基本内容,APLE系列主要是在掌握基本Linux API的基础上,封装了一套C+

Linux Shell脚本编程while语句

Linux Shell脚本编程while语句案例 1,每隔3秒,打印一次系统负载 #!/bin/bash while truedo    uptime    sleep 3done 2,把监控结果保存到文件,在后台执行,然后用tail -f监控文件变化[email protected]:~/linux/shell/flow_control$ sh while.sh &[1] 12867 #!/bin/bash while truedo    uptime >> log.txt    s