一、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. Linux入门 文本编辑器

    Vim vi -r file # 在上次使用vi编辑时发生崩溃,恢复file 在编辑多个文件时候 :n 下一个文件 :e# 回到刚才编辑的文件 撤销操作 撤销前一个命令 输入"u" ...

  2. c++ bitset——一个有趣的类型

    转自:https://www.cnblogs.com/magisk/p/8809922.html 概况:一个最小可达1bit的特殊数据结构

  3. 设计 4 个线程,其中两个线程每次对 j 增加 1,另外两个线程对 j 每次减少 1。写出程序。

    先设计一个类处理加减这一行为: public class ManyThread { private int j = 0; public synchronized void inc(){ j++; Sy ...

  4. CSS札记(一):CSS选择器

    一.语法规则 选择器{ 属性1:属性值1; 属性2:属性值2; ...... } /*注释*/ 二.如何在html中应用CSS 1. 外部引用css文件 css文件:css/layout.css(cs ...

  5. Hyperledger交易流程

    Hyperledger Fabric Network中的角色 在Hyperledger中,由三种类型的角色: Client:应用客户端,用于将终端用户的交易请求发送到区块链网络: Peers:负责维护 ...

  6. centos6最小化安装默认没有 NetworkManager服务

    转载Centos6最小化安装中设置网卡默认启动   Centos 6.0版本提供了一个"最小化"(Minimal)安装的选项.这是一个非常好的改进,因为系统中再也不会存在那些不必要 ...

  7. 在阿里云centOS7上部署Redis 5.0.5主从 + 哨兵模式

    一.在两台服务器上分别安装.配置Redis 5.0.5 ,为一主一从 安装Redis关键命令: 将安装包上传至:/home 目录下解 压:.tar.gz 安装依赖:yum install gcc 安装 ...

  8. 解决旋转屏幕闪退在androidManifest.template.xml里,activity项添加:

     解决旋转屏幕闪退在androidManifest.template.xml里,activity项添加:android:configChanges="orientation|keyboard ...

  9. 类TreeMap

    TreeMap类 import java.util.Set; import java.util.TreeMap; public class IntegerDemo { public static vo ...

  10. vs2010自带的报表应用

    1.先创建一个本地的数据库,右键单击你的项目-->选择[Add]--->New Item--->Local database.创建数据库后,添加一个数据表T_student,添加一些 ...