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

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

grep按行检索,按行输出。

1, 搜索特定模式的行

 [lizhen@dhcp-- shell]$ grep words n
this is a words file.
words words to be
[lizhen@dhcp-- shell]$

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

[lizhen@dhcp-- 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
[lizhen@dhcp-- shell]$

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

[lizhen@dhcp-- 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
[lizhen@dhcp-- shell]$

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

[lizhen@dhcp-- shell]$ grep words n
this is a words file.
words words to be
[lizhen@dhcp-- shell]$ grep words n -o
words
words
words
[lizhen@dhcp-- shell]$

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

[lizhen@dhcp-- shell]$ grep words n -v
, , , , , , , , , ,
beginning linux programming 4th edition this is a line containing pattern
,.<>?;';;;' [] {= = \ \ \| -__!@#$%^&*() !@#$$%%^&*(()*&%@(#$%)) www.regexper.com
www.google.com
www.baidu.com
www.redhat.com
[lizhen@dhcp-- shell]$

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

[lizhen@dhcp-- shell]$ grep words n -c

[lizhen@dhcp-- shell]$ grep words n
this is a words file.
words words to be
[lizhen@dhcp-- shell]$

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

[lizhen@dhcp-- shell]$ grep -o words n | wc -l

[lizhen@dhcp-- shell]$ grep words n
this is a words file.
words words to be
[lizhen@dhcp-- shell]$

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

[lizhen@dhcp-128-93 shell]$ grep w -n n n1
n:1:this is a words file.
n:2:words words to be
n:10:www.regexper.com
n:11:www.google.com
n:12:www.baidu.com
n:13:www.redhat.com
n1:1:this is a words file.
n1:2:words words to be
n1:10:www.regexper.com
n1:11:www.google.com
n1:12:www.baidu.com
n1:13:www.redhat.com
[lizhen@dhcp-128-93 shell]$

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

[lizhen@dhcp-- shell]$ grep words n
this is a words file.
words words to be
[lizhen@dhcp-- shell]$ grep words -b -o n
:words
:words
:words
[lizhen@dhcp-- shell]$

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

[lizhen@dhcp-- 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
[lizhen@dhcp-- shell]$ grep words -l n n1
n
n1
[lizhen@dhcp-- shell]$

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

[lizhen@dhcp-- 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
[lizhen@dhcp-- shell]$ grep words -l n n1
n
n1
[lizhen@dhcp-- shell]$ grep words -L n n1
[lizhen@dhcp-- shell]$

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

[lizhen@dhcp-- shell]$ grep words . -R -n
./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
[lizhen@dhcp-- shell]$

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

[lizhen@dhcp-- shell]$ grep WORDS -i n
this is a words file.
words words to be
[lizhen@dhcp-- shell]$

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

[lizhen@dhcp-128-93 shell]$ grep -e words  -e www -o n
words
words
words
www
www
www
www
[lizhen@dhcp-128-93 shell]$

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

[lizhen@dhcp-- shell]$ grep -f f n
this is a words file.
words words to be
, , , , , , , , , , www.regexper.com
www.google.com
www.baidu.com
www.redhat.com
[lizhen@dhcp-- shell]$

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

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

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

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

#########################################################################
# File Name: begin.sh
# Author: lizhen
# mail: lizhen_ok@.com
# Created Time: Wed May :: PM CST
#########################################################################
#!/bin/bash
if [ $# -ne ]
then
echo "usage: $0 match_text filename"
exit
fi match_text=$
filename=$
grep -q "$match_text" $filename if [ $? -eq ]
then
echo "The text exists in the file"
else
echo "text does not exist in the file"
fi echo "done!"
[lizhen@dhcp-- shell]$ ./begin.sh words n
The text exists in the file
done!
[lizhen@dhcp-- shell]$

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

[lizhen@dhcp-- shell]$ grep www -B  n
this is a line containing pattern
,.<>?;';;;' [] {= = \ \ \| -__!@#$%^&*() !@#$$%%^&*(()*&%@(#$%)) www.regexper.com
www.google.com
www.baidu.com
www.redhat.com
[lizhen@dhcp-- shell]$ grep www -B n www.regexper.com
www.google.com
www.baidu.com
www.redhat.com
[lizhen@dhcp-- shell]$ grep www n
www.regexper.com
www.google.com
www.baidu.com
www.redhat.com
[lizhen@dhcp-- shell]$
[lizhen@dhcp-- shell]$ grep words -A   n
this is a words file.
words words to be
, , , , , , , , , ,
[lizhen@dhcp-- shell]$
[lizhen@dhcp-- shell]$ grep  n

[lizhen@dhcp-- shell]$ grep  n -C
beginning linux programming 4th edition [lizhen@dhcp-- shell]$
												

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

  1. Linux命令-文件文本操作grep

    文件文本操作 grep 在文件中查找符合正则表达式条件的文本行 cut 截取文件中的特定字段 paste 附加字段 tr 字符转换或压缩 sort 调整文本行的顺序,使其符合特定准则 uniq 找出重 ...

  2. 【OS_Linux】三大文本处理工具之grep命令

    grep(global search regular expression(RE) and print out the line,整行搜索并打印匹配成功的行 语法:grep  [选项]   搜索词  ...

  3. linux grep命令

    linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...

  4. linux管道命令grep命令参数及用法详解---附使用案例|grep

    功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...

  5. grep 命令详解

    [root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 - ...

  6. grep 命令操作

    linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...

  7. Linux命令(23)grep命令的使用

    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正 ...

  8. 每天一个linux命令(39):grep 命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  9. 由一条Linux的grep命令说起

    今天在开发的时候,看到同事使用了这样的一条linux命令 grep 'class YourClass' -rwi * |grep -v svn 想到了 grep命令的,几个参数. -r 明确要求搜索子 ...

随机推荐

  1. Cygwin 下的 自动安装工具 apt-cyg

    类似 于apt-get 或者 yum Cygwin可以在Windows下使用unix环境Bash和各种功能强大的工具,对于Linux管理员来说不想使用Linux桌面是必备的工具. Cygwin下也有类 ...

  2. Internationalization(i18n) support in SAP CRM,UI5 and Hybris

    i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是"国际化"的简称.对程序来说,在不修改内部代码的情况下,能根据不同语言及 ...

  3. 【转】iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘挡住UITextField的方法

    iOS上面对键盘的处理很不人性化,所以这些功能都需要自己来实现, 首先是点击return和屏幕隐藏键盘 这个首先引用双子座的博客 http://my.oschina.net/plumsoft/blog ...

  4. Java环境变量搭建(Linux环境)

    1. 下载解压JDK压缩包 例如:解压到 /opt/jdk1.7.0_80 下 2. 添加环境变量到 /etc/profile 文件中 vi /etc/profile 在文件末尾追加如下内容: exp ...

  5. python序列化(数据本地存放持久性存储)和反序列化

    http://blog.csdn.net/uestcyao/article/details/7874817 #读取图片并存储为矩阵 from scipy.misc import imread im = ...

  6. CUDA:Supercomputing for the Masses (用于大量数据的超级计算)-第五节

    原文链接 第五节:了解和使用共享内存(2) Rob Farber 是西北太平洋国家实验室(Pacific Northwest National Laboratory)的高级科研人员.他在多个国家级的实 ...

  7. shell脚本,awk实现跳过文件里面的空行。

    1.用awk '{if(!NF ){next}}1' file11 实现对文件里面的空行进行跳过操作,并输出结果. 2. awk '{if(!NF || /^#/){next}}1' file11 实 ...

  8. 更改zabbix-server的端口

    1.前言zabbix-server的默认端口号是10051.如果存在端口号冲突,需要更改端口号. 以下为更改端口号的步骤. 2.更改配置文件 通常用安装包,也就是yum方式部署的话,其默认的配置文件是 ...

  9. cf519C. A and B and Team Training(找规律)

    题意 $a$个学生,$b$个教练 可以两个学生和一个教练一组,也可以两个教练和一个学生一组,问最多组成多少组 Sol 发题解的目的是为了纪念一下自己的错误思路 刚开始想的是:贪心的选,让少的跟多的分在 ...

  10. 十、Shell 函数

    Shell 函数 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用. shell中函数的定义格式如下: [ function ] funname [()] { action ...