一、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. ORB an efficient alternative to SIFT or SURF

    AbstractFeature matching is at the base of many computer vision problems, such as object recognition ...

  2. 小程序中css3实现优惠券

    效果如下: css3实现优惠券 知识储备 颜色渐变 linear-gradient() css伪类 :before :after index.wxss .app { /* padding: 20rpx ...

  3. 大数据笔记(二十)——NoSQL数据库之MemCached

    一.为什么要把数据存入内存? 1.原因:快2.常见的内存数据库 (*)MemCached:看成Redis的前身,严格来说Memcached的不能叫数据库,原因:不支持持久化 (*)Redis:内存数据 ...

  4. 大数据笔记(九)——Mapreduce的高级特性(B)

    二.排序 对象排序 员工数据 Employee.java  ----> 作为key2输出 需求:按照部门和薪水升序排列 Employee.java package mr.object; impo ...

  5. Day02 结构类型

    1.结构类型是值类型  (类是引用类型) 2.结构中也可以像类一样,定义 字段  属性  方法  但是不能给字段赋初始值 3.结构的构造方法中,必须为所有的字段赋值 4.不能为结构显示定义无参数的构造 ...

  6. 最近使用的两个工具 winscp和xshell

    最近在编译MONO源码时用到了这两个工具,感觉挺好,记录备忘 WINSCP 长这样 用于可视化的查看和操作远程服务器上的文件 xshell用于命令行下操作远程服务器,服务器的同学好多在用这个.命令行是 ...

  7. oracle 表连接 - sort merge joins 排序合并连接

    https://blog.csdn.net/dataminer_2007/article/details/41907581一. sort merge joins连接(排序合并连接) 原理 指的是两个表 ...

  8. R 时间戳转化

    转 http://stackoverflow.com/questions/1962278/dealing-with-timestamps-in-r You want the (standard) PO ...

  9. hive三种方式区别和搭建

    Hive 中 metastore(元数据存储)的三种方式:         a)内嵌 Derby 方式         b)Local 方式          c)Remote 方式    第一种方式 ...

  10. 转)delphi chrome cef3 控件学习笔记 (二)

    (转)delphi chrome cef3 控件学习笔记 (二) https://blog.csdn.net/risesoft2012/article/details/51260832 原创 2016 ...