一、grep程序

Linux下有文本处理三剑客:grep、sed、awk

grep:文本 行过滤工具

sed:文本 行编辑器(流编辑器)

awk:报告生成器(做文本输出格式化)

1、grep

  grep包含三个命令:grep、egrep、fgrep,他们是用来进行 行模式(patten)匹配的

    egrep == grep -E

    fgrep == fast grep

    grep默认使用正则表达式进行文本匹配

2、grep的用法

  grep [option]… PATTEN [filename]

3、grep的常见选项

  -E 支持使用扩展的正则表达式(regexp)

  -P 使用perl语言的正则表达式引擎进行搜索(每一种语言的正则表达式引擎都不相同,甚至sed grep awk 使用的regexp引擎也不相同)

  -i 忽略大小写

  -v 进行反选

  -o 仅仅输出匹配的内容(默认输出匹配到的行

  --color=auto 语法着色

  -n 显示行号

  -w 匹配固定的单词

4、PATTEN—正则表达式

  作用:通过一些特殊字符,来表示一类字符内容,交给前面的命令来执行;如果使用特殊字符本身含义就需要使用 \ 进行转义

  a) 文件通配符: *   ?    [ ]    [^ ]

  b) 字符匹配:

    .  任意一个字符

    [ ]  范围内的任意一个字符

    [^ ] 范围外的任意一个字符

    字符类:

      [:alnum:] 字母+数字

      [:alpha:] 字母

      [:upper:] 大写字母

      [:lower:] 小写字母

      [:digit:] 数字

      [:punct:] 表示特殊字符

      [:space:] 空格    ^[[:space:]]*$ 有空格键的空行

  c) 次数匹配

    *  匹配前一个字符0次到多次 .*表示任意长度的任意字符

    \?  匹配前一个字符0次到1次

    \+  匹配前一个字符1次到n次

    \{m\} 匹配前一个字符m次   a\{7\} == aaaaaaa

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

    \{0,n\} 匹配前一个字符0到n次

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

  d) 位置锚定

    ^  锚定行首

    $  锚定行尾

    \b  锚定词首和锚定词尾

    \>  锚定词尾

    \<  锚定词首

  e) 分组   分组的特性:默认情况下,Linux系统会为分组指定变量,变量的表示形式为\1 \2 \3 …

    \(\)     实例: \(abc\) 把abc看成一个整体匹配

练习:

1、显示/proc/meminfo文件中大小s开头的行

grep -i "^s" /proc/meminfo

2、显示/etc/passwd文件中不以/bin/bash结尾的行

grep -v "/bin/bash$" /etc/passwd

3、显示/etc/passwd文件中UID号最大的用户的用户名

sort -n -t: -k3 /etc/passwd | tail - | cut -d: -f1

4、如果用户root存在,显示其默认的shell程序

grep "^root\>" /etc/passwd &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7
id root &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7

5、找出/etc/passwd中的两位或三位数

grep "[0-9]\{2,3\}" /etc/passwd

6、显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面为非空白字符的行

grep "^[[:space:]]\+.*[^[:space:]]$" /etc/rc.d/rc.sysinit

7、找出”netstat -tan”命令的结果中,以“LISTEN”后跟0、1或多个空白字符结尾的行

netstat -tan | grep "LISTEN[[:space:]]*$"

8、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin):而后找出/etc/passwd文件中用户名同shell名的行

useradd bash /bin/bash
useradd testbash
useradd basher
useradd -s /sbin/nologin nologin
grep "\(^[[:alnum:]]\+\>\).*\1$" /etc/passwd

Linux--shell grep与正则表达式--04的更多相关文章

  1. [Linux 006]——grep和正则表达式

    在使用系统时,我们或多或少的有一些搜索.查找的需求,必须要在文本中搜索某个关键字,或者过滤出文本中某些特定的行.grep 命令就为我们提供了这样一个功能,同时,grep 还可以使用正则表达式进行匹配, ...

  2. Linux之grep及正则表达式

    grep简介 grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.通常grep有三种版本grep.egrep(等同于grep -E)和fgrep.egrep为扩展的g ...

  3. SHELL —— grep命令+正则表达式

    一 什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 生活中处处都是正则: 比如我们描述:4条腿 你可能会想 ...

  4. linux shell中的正则表达式

    正则表达式的使用 正则表达式,又称规则表达式.(英语:Regular Expression [ˈreɡjulə] 规则的 [ iksˈpreʃən] 表达 ),在代码中常简写为regex.regexp ...

  5. linux shell grep/awk/sed 匹配tab

    处理文件的命令实在是多, sed, awk, grep等.遇到了需要匹配tab的情况, 记录一下. 例子如下:找出文本中第一列是1的行. 文本a 解法1 : 直接使用正则表达式, ^表示开头, \t表 ...

  6. linux命令grep及正则表达式

  7. linux shell 删除满足正则表达式的文件

    用find配合xargs rm find . -type f -name "to_delete_file_[a-z]_*_[0-9].jpg" | xargs rm

  8. linux grep和正则表达式

    虽然正则表达式经常都在用,但是很少能够静下心来仔细的总结一下.最近看了一个台湾人的网站叫做鸟哥Linux私房菜,关于正则表达式的描述挺详细的.在此,我进行一下总结,如果想仔细的学习正则表达式,请访问鸟 ...

  9. linux shell 正则表达式(BREs,EREs,PREs)差异比较

    linux shell 正则表达式(BREs,EREs,PREs)差异比较 则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符 串的单个字符串.在很多文本编辑器或其他工具里 ...

随机推荐

  1. codevs 1160 蛇形矩阵x

    题目描述 Description 小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该 ...

  2. HDU 6582 Path

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submissio ...

  3. c++复习——临考前的女娲补天 >=.<

    一些零零散散的知识点... 1.抽象类只能作为其他类的基类,不能建立对象,但抽象类的派生类如果给出纯虚函数的函数体,这个派生类仍然是一个抽象类.//这个好理解 懂了 2.抽象类不能作为参数类型,函数的 ...

  4. 高通camera基本代码架构【转】

    本文转载自:http://blog.sina.com.cn/s/blog_c0de2be70102vyn1.html 1  camera基本代码架构 高通平台对于camera的代码组织,大体上还是遵循 ...

  5. HTML - form 表单提交

    form 表单提交 数据发送 disabled:不发送 display_none:发送 type_hidden:发送 readonly:发送 测试 html: <!DOCTYPE html> ...

  6. python使用__new__创建一个单例模式(单例对象)

    #单例模式:使一个类只产生一个对象.他们的id地址都指向同一个内存地址 第一步:理解谁创建了对象 # 单例模式# 首先明白,我们在创建一个类的对象的时候,其实是调用的这个类的父类,即继承object, ...

  7. 5 centos 6.10 三节点安装apache hadoop 2.9.1

    Hadoop 版本: apache hadoop 2.9.1JDK 版本: Oracle JDK1.8集群规划master(1): NN, RM, DN, NM, JHSslave1(2): DN, ...

  8. Bootstrap 学习笔记 项目实战 首页内容介绍 上

    效果图: HTML代码: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset ...

  9. spring中@Autowired与 @Resource区别

    @Autowired 与@Resource的区别: 1. @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上. 2. @Autowired默认 ...

  10. python爬虫——爬取淘票票正在热映电影

    今天正好学习了一下python的爬虫,觉得收获蛮大的,所以写一篇博客帮助想学习爬虫的伙伴们. 这里我就以一个简单地爬取淘票票正在热映电影为例,介绍一下一个爬虫的完整流程. 首先,话不多说,上干货——源 ...