博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
grep的用法
阅读量:7206 次
发布时间:2019-06-29

本文共 2116 字,大约阅读时间需要 7 分钟。

功能说明:查找文件里符合条件的字符串。

       语  法:grep [-abcEFGhHilLnqrsvVwxy] [-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范 本样式>][-f<范本文件>][--help][范本样式][文件或目录...]


如果要在一个或几个文本文件中查找一字符串,可以使用‘grep’命令。

grep pattern filename

grep pattern filename1 filename2

假设正在‘/usr/src/linux/Documentation’目录下搜索带字符串‘magic’的文件:

$ grep magic /usr/src/linux/Documentation/*

sysrq.txt:* How do I enable the magic SysRQ key?

sysrq.txt:* How do I use the magic SysRQ key?

默认情况下,‘grep’只搜索当前目录。如果此目录下有许多子目录时,

明确要求搜索子目录:grep -r

或明确忽略子目录:grep -d skip 结果等同于 默认情况

当然,如果预料到有许多输出,可以通过 管道 将其转到‘less’上阅读:

$ grep magic /usr/src/linux/Documentation/* | less

这样,就可以更方便地阅读。

命令行参数:

grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,

grep -n pattern files: 打印匹配的行并追加行号.

grep -v pattern files 打印不包含pattern的行.

grep -l pattern files :只列出匹配的文件名,

grep -L pattern files :列出不匹配的文件名,注意,对于grep -L pattern ./* , 假如当前子目录mydir中含有符合匹配条件的a.txt,但列不匹配文件名时却有mydir; 如果改为grep -L -r pattern ./* 才不会列出mydir.

grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),

grep -C number pattern files :匹配的上下文分别显示[number]行,

grep 'pattern1\| pattern2' files :显示匹配 pattern1 或 pattern2 的行,注意, 要双引号或单引号,以及反斜杠。

grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

正则表达式

^

  锚定行的开始 如:'^grep'匹配所有以grep开头的行。

  $

  锚定行的结束 如:'grep$'匹配所有以grep结尾的行。

       .

  匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。

  *

  匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。

  []

  匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。

  [^]

  匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

  (..)

  标记匹配字符,如'(love)',love被标记为1。

  \<

  锚定单词的开始,

        \>

  锚定单词的结束,如'grep>'匹配包含以grep结尾的单词的行。

  x'\{m\}'    

  重复字符x,m次,如:'0{5}'匹配包含5个o的行。 注意, 要双引号或单引号,以及反斜杠。

  x'\{m,\}'

  重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。

  x'\{m,n\}'

  重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5--10个o的行。

例子:grep '[A-Z]...[0-9]' file 包含五个字符,以大写开头, 和一个数字结尾的行.

grep "$LOGNAME" file 包含变量内容的行, 注意必须用双引号, 单引号则无法引用变量.

结合find和grep

-print :表明find命令应输出其搜索到的和标准相匹配的文件名

# find -name "*.txt" -print -exec grep test {} \;

grep test {} \; :-exec参数的一部分.每次找到和-name参数中指定的条件相匹配的文件时,用来搜索单词test的grep命令将被执行。

{} :参数告诉find命令每次执行-exec部分的命令时插入匹配文件的完整路径和文件名。

\; :表示find每次找到一个匹配文件时其所执行的-exec部分的命令结束。

也可以将-print去掉。

转载地址:http://dymum.baihongyu.com/

你可能感兴趣的文章
Eclipse快捷键一览表(转载)
查看>>
随机访问流 RandomAccessFile
查看>>
图片上传读取代码
查看>>
服务器安装环境基本操作
查看>>
nslookup命令
查看>>
c++函数模板作为类的成员函数,编译报错LNK2019的解决方法
查看>>
Tensorflow安装
查看>>
判断个十百千位之后是否大于20 java——CSDN博客
查看>>
.Net插件编程模型:MEF和MAF[转载]
查看>>
java实现excel的导入导出(poi详解)[转]
查看>>
[转载]浅析jQuery框架与构造对象
查看>>
微信小程序基本入门
查看>>
oracl 数字型函数
查看>>
Q443 压缩字符串
查看>>
Bootstrap——网站添加字体图标
查看>>
MVC传递数据-传递对象或对象集合
查看>>
单页应用的三大优势及监控方法
查看>>
菜鸟调错(三)——Jboss与jdk版本号不兼容导致WebService调用出错
查看>>
你是那种仅仅看《XXXXX从入门到精通》的程序猿吗?
查看>>
Python开发【第一篇】:目录
查看>>