`

Linux shell grep指令

 
阅读更多

grep一般格式为:
grep [选项]基本正则表达式[文件]
这里基本正则表达式可为字符串。

单引号双引号
在g r e p命令中输入字符串参数时,最好将其用双引号括起来。
在调用模式匹配时,应使用单引号。

例如:“m y s t r i n g”。这样做有两个原因,一是以防被误解为s h e l l命令,二是可以用来查找多个单词组成的字符串。
在调用变量时,也应该使用双引号,诸如: g r e p“$ M Y VA R”文件名,如果不这样,将没有返回结果。

常用的g r e p选项有:
-c 只输出匹配行的计数。
-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。

举例:
1、查询多个文件
在所有文件中查询单词“ sort it”
$ grep "sort it" *

2、 行匹配
1)显示包含“4 8”字符串的文本:
$ grep  "48" data.f
2)输出匹配行的总数
$ grep -c "48" data.f
4
3)行数
显示满足匹配模式的所有行行数:
$ grep -n "48" data.f
行数在输出第一列,后跟包含4 8的每一匹配行。

4)显示非匹配行
$ grep -v "48" data.f

5)精确匹配
可能大家已注意到,在上一例中,抽取字符串“ 4 8”,返回结果包含诸如4 8 4和4 8 3等包含“4 8”的其他字符串,实际上应精确抽取只包含4 8的各行。
使用g r e p抽取精确匹配的一种更有效方式是在抽取字符串后加\ >。假定现在精确抽取4 8,方法如下:
$grep "48\>" data.f

6)大小写敏感
缺省情况下, g r e p是大小写敏感的,如要查询大小写不敏感字符串,必须使用- i开关。在d a t a . f文件中有月份字符S e p t,既有大写也有小写,要取得此字符串大小写不敏感查询,方法如下:
$grep -i "48" data.f


1、模式范围
抽取代码为4 8 4和4 8 3的城市位置,可以使用[ ]来指定字符串范围。
$ grep "48[34]" data.f

2、不匹配行首
使行首不是4或8,可以在方括号中使用^记号。
$ grep "^[^48]" data.f
如果是字符串48
$ grep -v "^[^48]" data.f

3、设置大小写
使用- i开关可以屏蔽月份S e p t的大小写敏感
$ grep -i "sept" data.f
也可以用另一种方式[ ]模式抽取各行包含S e p t和s e p t的所有信息。
$ grep '[sS]ept' data.f

如果要抽取包含S e p t的所有月份,不管其大小写,并且此行包含字符串483,可以使用管道命令,即符号“|”左边命令的输出作为“ |”右边命令的输入。举例如下:
[sam@chenwy sam]$ grep '[sS]ept' data.f | grep 48
483     Sept    5AP1996 USP     65.00   LVX2C   189

4、匹配任意字符
如果抽取以K开头,以D结尾的所有代码,可使用下述方法,因为已知代码长度为5个字符:
[sam@chenwy sam]$ grep 'K...D' data.f
47      Oct     3ZL1998 LPSX    43.00   KVM9D   512
483     may     5PA1998 USP     37.00   KVM9D   644

将上述代码做轻微改变,头两个是大写字母,中间两个任意,并以C结尾:
[sam@chenwy sam]$ grep '[A-Z]..C' data.f

5、日期查询
一个常用的查询模式是日期查询。先查询所有以5开始以1 9 9 6或1 9 9 8结尾的所有记录。使用模式5 . . 1 9 9 [ 6 , 8 ]。这意味着第一个字符为5,后跟两个点,接着是1 9 9,剩余两个数字是6或8。
[sam@chenwy sam]$ grep '5..199[6,8]' data.f

6、范围组合
必须学会使用[ ]抽取信息。假定要取得城市代码,第一个字符为0-9,第二个字符在0到5之间,第三个字符在0到6之间,使用下列模式即可实现。
[sam@chenwy sam]$ grep '[0-9][0-5[0-6]' data.f

7、模式出现机率
抽取包含数字4至少重复出现两次的所有行,方法如下
[sam@chenwy sam]$ grep '4\{2,\}' data.f

8、使用grep匹配“与”或者“或”模式
g r e p命令加- E参数,这一扩展允许使用扩展模式匹配。例如,要抽取城市代码为2 1 9或2 1 6,方法如下:
[sam@chenwy sam]$ grep -E '219|216' data.f

9、空行
结合使用^和$可查询空行。使用- c参数显示总行数:
[sam@chenwy sam]$ grep -c '^$' myfile

使用- n参数显示实际在哪一行:
[sam@chenwy sam]$ grep -n '^$' myfile

10、匹配特殊字符
查询有特殊含义的字符,诸如$ . ' " * [] ^ | \ + ? ,必须在特定字符前加\。假设要查询包含“.”的所有行,脚本如下:
[sam@chenwy sam]$ grep '\.' myfile
或者是一个双引号:
[sam@chenwy sam]$ grep '\"' myfile

以同样的方式,如要查询文件名c o n f t r o l l . c o n f(这是一个配置文件),脚本如下:
[sam@chenwy sam]$ grep 'conftroll\.conf' myfile

11、查询格式化文件名
使用正则表达式可匹配任意文件名。系统中对文本文件有其标准的命名格式。一般最多六个小写字符,后跟句点,接着是两个大写字符。
[sam@chenwy sam]$ grep '^[a-z]\{1,6\}\.[A-Z]\{1,2\}' filename

2、使用通配符*的匹配模式
grep "l.*s" testfile

如在行尾查询某一单词,试如下模式:
grep "ng$" testfile
这将在所有文件中查询行尾包含单词ng的所有行。

分享到:
评论

相关推荐

    linux-shell脚本命令:grep命令简介

    grep命令是Linux系统中非常重要的文本搜索工具,它可以对文件中的内容进行搜索,并根据用户的搜索模式,显示出包含该模式的行。grep是Global Regular Expression Print的缩写,它支持POSIX基本正则表达式和扩展正则...

    linux Shell编程入门 实例讲解详解.doc

    Shell不仅仅是一个命令行接口,它也是一种强大的脚本语言,能够帮助用户高效地执行一系列系统指令。本文将深入介绍Shell编程的基础知识,包括创建脚本、变量、注释、命令以及流程控制。 首先,了解为什么要进行...

    Linux JSON 命令总结.zip_json linux_shell解析json

    本文将深入探讨如何在Linux系统下使用Shell命令来解析JSON数据。 首先,我们介绍几个常用的Linux命令行工具,它们专门用于处理JSON格式的数据: 1. **`jq`**: `jq`是Linux下的一个强大的JSON处理器,它可以用来...

    ghost和linux shell编程教程

    Shell是Linux操作系统中的一种命令解释器,允许用户通过命令行输入指令来控制操作系统。Bash(Bourne-Again SHell)是最常见的Shell,它提供了丰富的内置命令、变量、控制结构以及函数,使得编写脚本程序变得简单且...

    linux shell 编程指南

    在Linux中,Shell是一种用户界面,它接收用户的输入并将其转化为操作系统可以理解的指令。常见的Shell类型有Bash(Bourne Again SHell)、Sh、Csh、Tcsh等,其中Bash是最常用的一种。 Shell脚本的基础包括变量、...

    Linux学习资料,包括Linux常用指令、shell编程、GNU maker

    本资源包提供了一份全面的Linux学习资料,涵盖了Linux常用指令、Shell编程以及GNU Maker的相关知识,对于想要深入理解和操作Linux系统的初学者来说极具价值。 首先,让我们了解一下Linux常用指令。在Linux命令行...

    linuxshell命令unixshell命令教程.rar

    Shell是Linux和Unix系统中的一个用户接口,它允许用户通过命令行输入指令与操作系统交互。常见的Unix Shell有Bourne Shell(sh)、C Shell(csh)和Korn Shell(ksh),而Linux系统中最常用的是Bash(Bourne-Again ...

    linuxshell编程

    Shell是Linux系统中的命令解释器,它提供了一个交互式的环境,用户可以通过命令行输入指令来与操作系统进行交互。同时,Shell还支持脚本编程,允许用户编写一系列命令形成一个可执行文件,实现自动化任务。 【描述...

    linux shell 编程3

    Linux Shell编程是Linux系统管理与自动化任务的核心技术之一。Shell是一种命令解释器,它提供了用户与操作系统内核交互的界面。在本教程中,我们将深入探讨Linux Shell编程的基础和高级概念,助你从入门到精通。 一...

    精通 LINUX & UNIX Shell 程序设计.pdf 高清下载

    Shell则是Linux系统中用于提供用户与操作系统交互的一个命令解释器,它通过命令行界面接收用户的输入,并将其转换为系统能理解的指令。 Shell脚本编写是管理和自动化任务的强大工具,它使用的是脚本语言,允许用户...

    Linux系统指令:文件内容查询工具Grep

    【Linux系统指令:文件内容查询工具Grep】 Grep是一个在Linux系统中广泛使用的文本搜索工具,它基于正则表达式,能够高效地在文件内容中查找匹配的文本行。这个强大的工具是GNU项目的一部分,提供了更丰富的功能,...

    linux和shell教程

    3. **Linux命令**:Linux命令是通过Shell执行的指令,用于执行各种操作。例如: - `ls`:列出目录内容。 - `cd`:改变当前工作目录。 - `mkdir`:创建新目录。 - `rm`:删除文件或目录。 - `cp`:复制文件或...

    linux shell 编程2

    - **命令行基础**:Linux命令行通过键盘输入指令执行任务,例如`ls`列出目录内容,`cd`切换目录,`pwd`显示当前工作目录。 - **文件与目录操作**:`mkdir`创建目录,`rm`删除文件或目录,`cp`复制文件,`mv`移动或...

    Linux Shell编程指导

    Linux Shell编程是操作系统中一种非常实用的技术,尤其对于系统管理员和开发者来说,它提供了一种高效的方式来自动化任务和集成各种UNIX/Linux工具。本篇指导针对初学者,将介绍UNIX shell的作用、主要分类以及Bash...

    LINUX Shell编程指南

    Linux Shell编程指南是一本深入探讨Linux环境下的Shell脚本编程技术的书籍,它为读者揭示了如何利用bash(Bourne-Again SHell)来实现各种自动化任务和系统管理功能。Shell作为Linux操作系统中的命令解释器,是用户...

    Linux Shell编程艺术-3

    Shell脚本是Linux环境中的命令解释器,它允许用户通过编写脚本来执行一系列指令,从而提高效率和自动化程度。在"Linux Shell编程艺术-3"中,我们将深入探讨一些高级主题和技巧,帮助你进一步提升Shell编程能力。 ...

    linux编程含有shell内部各种指令

    本篇文章将深入探讨Linux编程中涉及到的Shell内部指令及其用法。 1. **基本Shell指令** - `cd`: 改变当前工作目录,如`cd /home/user`将用户目录切换到/home/user。 - `ls`: 列出目录内容,常用选项 `-l` 以详细...

Global site tag (gtag.js) - Google Analytics