文本处理grep命令

 1 this is a words file.
 2 words words to be
 3 1 2, 3  4 , 5 , 5 6 , 6 , 7 , 7 , 8 , 8 9 , 9 , 10
 4 beginning linux programming 4th edition
 5 1000 222222 334 5 99999
 6
 7 this is a line containing pattern
 8 ,.<>?;‘;;;‘ [] {= = \ \ \| [email protected]#$%^&*() [email protected]#$$%%^&*(()*&%@(#$%))
 9
10 www.regexper.com
11 www.google.com
12 www.baidu.com
13 www.redhat.com

我们的测试文件名字叫 n,如上所示,共13行。

grep按行检索,按行输出。

1, 搜索特定模式的行

1 [[email protected]128-93 shell]$ grep words n
2 this is a words file.
3 words words to be
4 [li[email protected]128-93 shell]$ 

2,单个grep命令可以对多个文件进行检索

[[email protected]128-93 shell]$ grep words n n1 n2
n:this is a words file.
n:words words to be
n1:this is a words file.
n1:words words to be
n2:this is a words file.
n2:words words to be
[[email protected]-128-93 shell]$ 

3,使用正则表达式,添加-E选项,或者直接egrep   (在terminal下可以看到这些被匹配的部分 是被红色 特殊显示的,这里显示的是被匹配到的 行)

[[email protected]128-93 shell]$ egrep "[a-o]+" n
this is a words file.
words words to be
beginning linux programming 4th edition
this is a line containing pattern
www.regexper.com
www.google.com
www.baidu.com
www.redhat.com
[[email protected]-128-93 shell]$ 

4,只输出文件中匹配到的文本部分呢,使用-o

[[email protected]128-93 shell]$ grep words n
this is a words file.
words words to be
[[email protected]-128-93 shell]$ grep words n -o
words
words
words
[[email protected]-128-93 shell]$ 

5,打印除包含match_pattern行之外的所有行,使用-v

[[email protected]128-93 shell]$ grep words n -v
1 2, 3  4 , 5 , 5 6 , 6 , 7 , 7 , 8 , 8 9 , 9 , 10
beginning linux programming 4th edition
1000 222222 334 5 99999

this is a line containing pattern
,.<>?;‘;;;‘ [] {= = \ \ \| [email protected]#$%^&*() [email protected]#$$%%^&*(()*&%@(#$%))

www.regexper.com
www.google.com
www.baidu.com
www.redhat.com
[[email protected]-128-93 shell]$ 

6,统计文件包含匹配字符串的行数,使用-c   (-c只统计匹配到的行数,并不会统计匹配到的次数)

[[email protected]128-93 shell]$ grep words n -c
2
[[email protected]-128-93 shell]$ grep words n
this is a words file.
words words to be
[[email protected]-128-93 shell]$ 

7,统计匹配到的字符串的数量,使用-o    |    wc -l

[[email protected]128-93 shell]$ grep -o words n | wc -l
3
[[email protected]-128-93 shell]$ grep words n
this is a words file.
words words to be
[[email protected]-128-93 shell]$ 

8,打印出包含匹配字符串的行号,使用-n

[[email protected] shell]$ grep w -n n n1n:1:this is a words file.n:2:words words to be n:10:www.regexper.comn:11:www.google.comn:12:www.baidu.comn:13:www.redhat.comn1:1:this is a words file.n1:2:words words to be n1:10:www.regexper.comn1:11:www.google.comn1:12:www.baidu.comn1:13:www.redhat.com[[email protected] shell]$

9 打印模式匹配所位于的字符或字节偏移,使用-b  -o

[[email protected]128-93 shell]$ grep words n
this is a words file.
words words to be
[[email protected]-128-93 shell]$ grep words -b -o n
10:words
22:words
28:words
[[email protected]-128-93 shell]$ 

10,搜索多个文件并找出文本位于哪一个文件中,使用-l

[[email protected]128-93 shell]$ grep words n n1
n:this is a words file.
n:words words to be
n1:this is a words file.
n1:words words to be
[[email protected]-128-93 shell]$ grep words -l n n1
n
n1
[[email protected]-128-93 shell]$ 

使用-L  大写的L字符,取相反的结果

[[email protected]128-93 shell]$ grep words n n1
n:this is a words file.
n:words words to be
n1:this is a words file.
n1:words words to be
[[email protected]-128-93 shell]$ grep words -l n n1
n
n1
[[email protected]-128-93 shell]$ grep words -L n n1
[[email protected]-128-93 shell]$ 

11,递归搜索文件,使用-R -n  (-n选项表示显示所在文件名:行号)

[[email protected]128-93 shell]$ grep words . -R -n
./n:1:this is a words file.
./n:2:words words to be
./n1:1:this is a words file.
./n1:2:words words to be
./n2:1:this is a words file.
./n2:2:words words to be
[[email protected]-128-93 shell]$ 

12,忽略样式中的大小写,使用-i

[[email protected]128-93 shell]$ grep WORDS -i n
this is a words file.
words words to be
[[email protected]-128-93 shell]$ 

13,使用grep匹配多个样式,使用-e

[[email protected] shell]$ grep -e words  -e www -o nwordswordswordswwwwwwwwwwww[[email protected] shell]$ 

14,使用样式文件,利用grep逐行读取样式文件,grep会将匹配到的行输出

[[email protected]128-93 shell]$ grep -f f n
this is a words file.
words words to be
1 2, 3  4 , 5 , 5 6 , 6 , 7 , 7 , 8 , 8 9 , 9 , 10
1000 222222 334 5 99999
www.regexper.com
www.google.com
www.baidu.com
www.redhat.com
[[email protected]-128-93 shell]$ 

15,在grep搜索中指定或排除文件

# grep "main()" . -r --include *.{c,cpp}

#grep "main()" . -r --exclude "readme"

16,grep 的静默输出,使用-q

#########################################################################
# File Name: begin.sh
# Author: lizhen
# mail: [email protected]163.com
# Created Time: Wed 18 May 2016 08:29:32 PM CST
#########################################################################
#!/bin/bash
if [ $# -ne 2  ]
then
    echo "usage: $0 match_text filename"
    exit 1
fi

match_text=$1
filename=$2
grep -q "$match_text" $filename

if [ $? -eq 0 ]
then
    echo "The text exists in the file"
else
    echo "text does not exist in the file"
fi

echo "done!"
[[email protected]128-93 shell]$ ./begin.sh words n
The text exists in the file
done!
[[email protected]-128-93 shell]$ 

17,打印匹配行之前或之后的行,使用-B,-A,-C选项

[[email protected]128-93 shell]$ grep www -B 3 n
this is a line containing pattern
,.<>?;‘;;;‘ [] {= = \ \ \| [email protected]#$%^&*() [email protected]#$$%%^&*(()*&%@(#$%))

www.regexper.com
www.google.com
www.baidu.com
www.redhat.com
[[email protected]-128-93 shell]$ grep www -B 1 n

www.regexper.com
www.google.com
www.baidu.com
www.redhat.com
[[email protected]-128-93 shell]$ grep www n
www.regexper.com
www.google.com
www.baidu.com
www.redhat.com
[[email protected]-128-93 shell]$ 
[[email protected]128-93 shell]$ grep words -A  1 n
this is a words file.
words words to be
1 2, 3  4 , 5 , 5 6 , 6 , 7 , 7 , 8 , 8 9 , 9 , 10
[[email protected]-128-93 shell]$ 
[[email protected]128-93 shell]$ grep 2222 n
1000 222222 334 5 99999
[[email protected]-128-93 shell]$ grep 2222 n -C 1
beginning linux programming 4th edition
1000 222222 334 5 99999

[[email protected]-128-93 shell]$ 
				
时间: 2024-10-09 21:56:35

文本处理grep命令的相关文章

Linux下文本搜索工具grep命令使用入门

grep命令入门 如果想通过使用grep命令来实现理想化的文本搜索,对正则表达式的了解是比不可少的.文献1对正则表达式语法做了一个简单的介绍,文献2提供了一个简单的入门.码农也可以自己google一下其他的参考资料.下面就grep命令的使用做个入门级的介绍. 1.1 grep命令的变种 linux下除了grep命令可以完成文本搜索外,还存在egrep,fgrep,rgrep三个命令.这三个命令都是由grep加上一些控制参数演变而来,如egrep=grep -E, fgrep=grep -F, r

文本处理工具之一grep命令详解

grep(Globel Search Regular Expression and Printing out the line)全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,是一个对行进行操作的搜索工作,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep. egrep表示扩展的grep,相比grep支持更多的元字符,"grep -E"相当于egrep.fgrep是fast grep,不支持元字符,但是搜索速度更快.

Linux中文本搜索工具“grep”命令详解

人生中应该有两次冲动,一次是轰轰烈烈的爱情,一次是说走就走的旅行.我属于第三种,轰轰烈烈的辞职然后马不停蹄的参加了马哥的linux面授班,两周时间内对linux有了些初步的了解,与此同时,两周内八天课程中的各种定义.概念.原理.命令由于量大.琐碎,也着实给我们这些小白一个下马威,即使每天11点撤退也觉得时间不够用.鉴于对自己的负责和马哥的作业要求,特对文本搜索工具grep写些使用指南,其中可能会有描述不确切或有偏颇之处,望及时指正. 开始--. 首先,要说一下grep是什么,用在什么地方. gr

Linux命令:grep命令 文本搜索

linux grep命令 (global search regular expression(RE) and print out the line )是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep这个应用程序最早由肯·汤普逊写成.grep原先是ed下的一个应用程序,名称来自于g/re/p(globally search a regular expression and print,以正规表示法进行全域查找以及打印). grep是非常强大的命令,配合管道一起使

文本查找查找命令的grep 、egrep、fgrep用法的详解

一.学习目标 了解并能熟悉运用grep.egrep.fgrep命令. 二.学习内容 1.grep.egrep.fgrep命令的意思和用法格式 : grep:是使用基本正则表达式定义的模式来过滤文本的命令. # grep [options] PATTERN  [FILE,...] egrep  :是使用扩展正则表达式的模式来过滤文本的命令. # egrep [options] PATTERN  [FILE,...] fgrep:不支持正则表达式,是使用文字本身的意义的模式来过滤文本的命令. # f

linux文本处理三剑客之grep命令详解

Linux文本处理三剑客之grep grep:文本过滤(模式:pattern)工具 grep, egrep, fgrep(不支持正则表达式搜索) sed:stream editor,文本编辑工具 awk:Linux上的实现gawk,文本报告生成器 grep grep: Global search REgularexpression and Print out the line 作用:文本搜索工具,根据用户指定的"模式"对目标文本逐行进行匹配检查:打印匹配到的行 模式:由正则表达式字符及

第十六章 在文件中搜索文本工具:grep命令 和egrep命令

第十六章 在文件中搜索文本工具:grep命令 和egrep命令 名词解释 grep(global search regular expression(RE)and print out the line,全面搜索正则表达式并把行打印出来) grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 选项 - -a :不要忽略二进制数据 - -A <显示行数>:除了显示符合范本样式的那一行之外,并显示该行之后的内容. - -b :在显示符合范本样式的那一行之外,并显示该行

Linux &nbsp; &nbsp; grep命令,正则表达式

grep命令及正则表达式 grep命令 grep , egrep , fgrep grep,sed,awk 文本处理三剑客 grep: Global search REgular expression and Print out the line;全面查找正则表达式并将匹配到的行显示出来; 正则表达式 正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用;许多程序设计语言都支持利用正则表达式进行字符串操作; 主流的正则引擎又分为三类:DFA;传统型NFA;POSIX NFA; DFA

【转】每天一个linux命令(39):grep 命令

原文网址:http://www.cnblogs.com/peida/archive/2012/12/17/2821195.html Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板.如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名.搜索的