Linux常用指令—grep(搜索过滤)(转)?Linux下Grep命令的详细使用方法

大家好!今天让小编来大家介绍下关于Linux常用指令—grep(搜索过滤)(转)?Linux下Grep命令的详细使用方法的问题,以下是酷知号的小编对此问题的归纳整理,让我们一起来看看吧。

Linux常用指令---grep(搜索过滤)(转)?Linux下Grep命令的详细使用方法

*  #匹配零个或多个先前字符 如:’*grep’匹配所有一个或多个空格后紧跟grep的行,-L   –files-without-match   #列出文件内容不符合指定的样式的文件名称,-v   –revert-match   #显示不包含匹配文本的所有行,grep 指令用于查找内容包含指定的范本样式的文件,实例2:查找指定进程个数 命令: ps -ef|grep svn -c ps -ef|grep -c svn 输出: # ps -ef|grep svn -c 2 # ps -ef|grep -c svn  2 # 说明: 实例3:从文件中读取关键词进行搜索 命令: cat test.txt | grep -f test2.txt 输出: # cat test.txt  hnlinux peida.cnblogs.com ubuntu ubuntu linux redhat Redhat linuxmint # cat test2.txt  linux Redhat # cat test.txt | grep -f test2.txt hnlinux ubuntu linux Redhat linuxmint # 说明: 输出test.txt文件中含有从test2.txt文件中读取出的关键词的内容行 实例3:从文件中读取关键词进行搜索 且显示行号 命令: cat test.txt | grep -nf test2.txt 输出: # cat test.txt  hnlinux peida.cnblogs.com ubuntu ubuntu linux redhat Redhat linuxmint # cat test2.txt  linux Redhat # cat test.txt | grep -nf test2.txt 1:hnlinux 4:ubuntu linux 6:Redhat 7:linuxmint # 说明: 输出test.txt文件中含有从test2.txt文件中读取出的关键词的内容行,-e《范本样式》  –regexp=《范本样式》   #指定字符串做为查找文件内容的样式,4.规则表达式: grep的规则表达式: ^  #锚定行的开始 如:’^grep’匹配所有以grep开头的行,.  #匹配一个非换行符的字符 如:’gr.p’匹配gr后接一个任意字符。

本文目录

  • Linux常用指令—grep(搜索过滤)(转)
  • Linux下Grep命令的详细使用方法
  • grep语法

Linux常用指令—grep(搜索过滤)(转)

Linux常用指令—grep(搜索过滤) (转) Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。 grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。 1.命令格式: grep  pattern file 2.命令功能: 用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。 3.命令参数: -a   –text   #不要忽略二进制的数据。    -A《显示行数》   –after-context=《显示行数》   #除了显示符合范本样式的那一列之外,并显示该行之后的内容。    -b   –byte-offset   #在显示符合样式的那一行之前,标示出该行第一个字符的编号。    -B《显示行数》   –before-context=《显示行数》   #除了显示符合样式的那一行之外,并显示该行之前的内容。    -c    –count   #计算符合样式的列数。    -C《显示行数》    –context=《显示行数》或-《显示行数》   #除了显示符合样式的那一行之外,并显示该行之前后的内容。    -d 《动作》      –directories=《动作》   #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。    -e《范本样式》  –regexp=《范本样式》   #指定字符串做为查找文件内容的样式。    -E      –extended-regexp   #将样式为延伸的普通表示法来使用。    -f《规则文件》  –file=《规则文件》   #指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。    -F   –fixed-regexp   #将样式视为固定字符串的列表。    -G   –basic-regexp   #将样式视为普通的表示法来使用。    -h   –no-filename   #在显示符合样式的那一行之前,不标示该行所属的文件名称。    -H   –with-filename   #在显示符合样式的那一行之前,表示该行所属的文件名称。    -i    –ignore-case   #忽略字符大小写的差别。    -l    –file-with-matches   #列出文件内容符合指定的样式的文件名称。    -L   –files-without-match   #列出文件内容不符合指定的样式的文件名称。    -n   –line-number   #在显示符合样式的那一行之前,标示出该行的列数编号。    -q   –quiet或–silent   #不显示任何信息。    -r   –recursive   #此参数的效果和指定“-d recurse”参数相同。    -s   –no-messages   #不显示错误信息。    -v   –revert-match   #显示不包含匹配文本的所有行。    -V   –version   #显示版本信息。    -w   –word-regexp   #只显示全字符合的列。    -x    –line-regexp   #只显示全列符合的列。    -y   #此参数的效果和指定“-i”参数相同。4.规则表达式: grep的规则表达式: ^  #锚定行的开始 如:’^grep’匹配所有以grep开头的行。     $  #锚定行的结束 如:’grep$’匹配所有以grep结尾的行。     .  #匹配一个非换行符的字符 如:’gr.p’匹配gr后接一个任意字符,然后是p。     *  #匹配零个或多个先前字符 如:’*grep’匹配所有一个或多个空格后紧跟grep的行。     .*   #一起用代表任意字符。    rep’匹配Grep和grep。     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的行。    w    #匹配文字和数字字符,也就是,如:’Gw*p’匹配以G后跟零个或多个文字或数字字符,然后是p。    W    #w的反置形式,匹配一个或多个非单词字符,如点号句号等。    b    #单词锁定符,如: ’bgrepb’只匹配grep。   POSIX字符: 为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如。在linux下的grep除fgrep外,都支持POSIX的字符类。     #文字数字字符        #文字字符        #数字字符        #非空字符(非空格、控制字符)        #小写字符        #控制字符        #非空字符(包括空格)        #标点符号        #所有空白字符(新行,空格,制表符)        #大写字符       #十六进制数字(0-9,a-f,A-F)   5.使用实例: 实例1:查找指定进程 命令: ps -ef|grep svn 输出: # ps -ef|grep svn root 4943   1      0  Dec05 ?   00:00:00 svnserve -d -r /opt/svndata/grape/ root 16867 16838  0 19:53 pts/0    00:00:00 grep svn # 说明: 第一条记录是查找出的进程;第二条结果是grep进程本身,并非真正要找的进程。 实例2:查找指定进程个数 命令: ps -ef|grep svn -c ps -ef|grep -c svn 输出: # ps -ef|grep svn -c 2 # ps -ef|grep -c svn  2 # 说明: 实例3:从文件中读取关键词进行搜索 命令: cat test.txt | grep -f test2.txt 输出: # cat test.txt  hnlinux peida.cnblogs.com ubuntu ubuntu linux redhat Redhat linuxmint # cat test2.txt  linux Redhat # cat test.txt | grep -f test2.txt hnlinux ubuntu linux Redhat linuxmint # 说明: 输出test.txt文件中含有从test2.txt文件中读取出的关键词的内容行 实例3:从文件中读取关键词进行搜索 且显示行号 命令: cat test.txt | grep -nf test2.txt 输出: # cat test.txt  hnlinux peida.cnblogs.com ubuntu ubuntu linux redhat Redhat linuxmint # cat test2.txt  linux Redhat # cat test.txt | grep -nf test2.txt 1:hnlinux 4:ubuntu linux 6:Redhat 7:linuxmint # 说明: 输出test.txt文件中含有从test2.txt文件中读取出的关键词的内容行,并显示每一行的行号 实例5:从文件中查找关键词 命令: grep ’linux’ test.txt 输出: # grep ’linux’ test.txt  hnlinux ubuntu linux linuxmint # grep -n ’linux’ test.txt  1:hnlinux 4:ubuntu linux 7:linuxmint # 说明: 实例6:从多个文件中查找关键词 命令: grep ’linux’ test.txt test2.txt 输出: # grep -n ’linux’ test.txt test2.txt  test.txt:1:hnlinux test.txt:4:ubuntu linux test.txt:7:linuxmint test2.txt:1:linux # grep ’linux’ test.txt test2.txt  test.txt:hnlinux test.txt:ubuntu linux test.txt:linuxmint test2.txt:linux # 说明: 多文件时,输出查询到的信息内容行时,会把文件的命名在行最前面输出并且加上”:”作为标示符 实例7:grep不显示本身进程 命令: ps aux|grep sh ps aux | grep ssh | grep -v “grep” 输出: # ps aux|grep ssh root   2720  0.0  0.0  62656  1212 ?      Ss   Nov02   0:00 /usr/sbin/sshd root  16834  0.0  0.0  88088  3288 ?      Ss   19:53   0:00 sshd: root@pts/0  root  16901  0.0  0.0  61180   764 pts/0  S+   20:31   0:00 grep ssh sh root   2720  0.0  0.0  62656  1212 ?      Ss   Nov02   0:00 /usr/sbin/sshd root  16834  0.0  0.0  88088  3288 ?      Ss   19:53   0:00 sshd: root@pts/0  # ps aux | grep ssh | grep -v “grep” root   2720  0.0  0.0  62656  1212 ?      Ss   Nov02   0:00 /usr/sbin/sshd root  16834  0.0  0.0  88088  3288 ?      Ss   19:53   0:00 sshd: root@pts/0 说明: 实例8:找出已u开头的行内容 命令: cat test.txt |grep ^u 输出: # cat test.txt |grep ^u ubuntu ubuntu linux # 说明: 实例9:输出非u开头的行内容 命令: cat test.txt |grep ^ 输出: hnlinux peida.cnblogs.com redhat Redhat linuxmint # 说明: 实例10:输出以hat结尾的行内容 命令: cat test.txt |grep hat$ 输出: # cat test.txt |grep hat$ redhat Redhat # 说明: 实例11:输出ip地址 命令:      ifconfig eth0|grep -E “(” 输出: {1,3}”           inet addr:192.168.120.204  Bcast:192.168.120.255  Mask:255.255.255.0 ”           inet addr:192.168.120.204  Bcast:192.168.120.255  Mask:255.255.255.0 # 说明: 实例12:显示包含ed或者at字符的内容行 命令: cat test.txt |grep -E “ed|at” 输出: # cat test.txt |grep -E “peida|com” peida.cnblogs.com # cat test.txt |grep -E “ed|at” redhat Redhat # 说明: 实例13:显示当前目录下面以.txt 结尾的文件中的所有包含每个字符串至少有7个连续小写字符的字符串的行 命令: grep ’{7}’ *.txt 输出: {7}’ *.txt test.txt:hnlinux test.txt:peida.cnblogs.com test.txt:linuxmint #实例14:日志文件过大,不好查看,我们要从中查看自己想要的内容,或者得到同一类数据,比如说没有404日志信息的 命令: grep ’.’ access1.log|grep -Ev ’404’ 》 access2.log grep ’.’ access1.log|grep -Ev ’(404|/photo/|/css/)’ 》 access2.log grep ’.’ access1.log|grep -E ’404’ 》 access2.log 输出: # grep “.”access1.log|grep -Ev “404” 》 access2.log 说明:上面3句命令前面两句是在当前目录下对access1.log文件进行查找,找到那些不包含404的行,把它们放到access2.log中,后面去掉’v’,即是把有404的行放入access2.log

Linux下Grep命令的详细使用方法

在linux中grep命令是非常有用的,它和管道(|)配合使用,非常强大,用于搜索文本文件.如果想要在几个文本文件中查找一字符串,可以使用‘grep’命令。‘grep’在文本中搜索指定的字符串。 假设您正在‘/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? 其中文件‘sysrp.txt’包含该字符串,讨论的是 SysRQ 的功能。 默认情况下,‘grep’只搜索当前目录。如果此目录下有许多子目录,‘grep’会以如下形式列出: grep: sound: Is a directory 这可能会使‘grep’的输出难于阅读。这里有两种解决的办法: 明确要求搜索子目录:grep -r 或忽略子目录:grep -d skip 当然,如果预料到有许多输出,您可以通过 管道 将其转到‘less’上阅读: $ grep magic /usr/src/linux/Documentation/* | less 这样,您就可以更方便地阅读。 有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果您忘了,‘grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 ,然后再试。 下面是一些有意思的命令行参数: grep -i pattern files :不区分大小写地搜索。默认情况区分大小写, grep -l pattern files :只列出匹配的文件名, grep -L pattern files :列出不匹配的文件名, grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’), grep -C number pattern files :匹配的上下文分别显示行, grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行, grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。 这里还有些用于搜索的特殊符号: 《 和 》 分别标注单词的开始与结尾。 例如: grep man * 会匹配 ‘Batman’、‘manic’、‘man’等, grep ’<man’ *="" grep ’’ 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。 ’^’:指匹配的字符串在行首, ’$’:指匹配的字符串在行尾, 如果您不习惯命令行参数,可以试试图形界面的‘grep’,如 reXgrep 。这个软件提供 AND、OR、NOT 等语法,还有漂亮的按钮 :-) 。如果您只是需要更清楚的输出,不妨试试 fungrep 。

grep语法

如果谈论计算机操作命令的grep, 语法与操作系统有关,对于 unix, linux 则是grep 命令用于查找文件里符合条件的字符串。grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。语法: grep 详细语法可查系统帮助文件,这里写不下。例子: grep -i apple fruitlist.txt 意思是从文件水果表里,把词苹果找出来。

以上就是小编对于Linux常用指令—grep(搜索过滤)(转)?Linux下Grep命令的详细使用方法问题和相关问题的解答了,Linux常用指令—grep(搜索过滤)(转)?Linux下Grep命令的详细使用方法的问题希望对你有用!

文章来自互联网,只做分享使用。发布者:酷知号,转转请注明出处:https://www.kuzhihao.com/article/315280.html

(0)

关于作者

上一篇 2023年7月18日 19:24
下一篇 2023年7月18日 19:24

相关推荐