linux搜索过滤--grep

Posted 幽幽子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux搜索过滤--grep相关的知识,希望对你有一定的参考价值。

  grep在服务端查询消息时经常会被使用到,这里总结几个常用,简单的命令,熟练掌握可以使查询更为高效。

  基本格式:

grep [option] pattern file

  几个重要的命令参数,这里不列举全部,只列举可能会常用的,便于快速查询:

  除了不加任何参数表示搜索符合之后的样式的内容之外,剩下的参数:

-v   --revert-match   #显示不包含匹配文本的所有行。 
-i    --ignore-case   #忽略字符大小写的差别。   
-n   --line-number   #在显示符合样式的那一行之前,标示出该行的列数编号。
-c    --count   #计算符合样式的列数。

  举例:

[[email protected] yyy]$ grep -c mongo nohup.out 
grep: nohup.out: Permission denied
[[email protected] yyy]$ sudo grep -c mongo nohup.out 
10633
[[email protected] yyy]$ sudo grep -v not stop.sh 
#!/bin/sh
PROCESS=`ps -ef|grep zzz|grep -v grep|grep -v PPID|awk { print $2}`
num=`ps -ef|grep zzz|grep -v grep|wc -l`
for i in $PROCESS
do
  echo "Kill the consumer process [ $i ]"
  kill -9 $i
done
echo "$num processes be killed"

[[email protected] yyy]$ sudo grep -i ppid stop.sh 
PROCESS=`ps -ef|grep zzz|grep -v grep|grep -v PPID|awk { print $2}`
[[email protected] yyy]$ sudo grep -n -i ppid stop.sh 
2:PROCESS=`ps -ef|grep zzz|grep -v grep|grep -v PPID|awk { print $2}`

  如果将grep与正则表达式结合,可以使得该工具变得更加强大,这里记录几个常用的正则表达式,可以和grep参数配合使用:

\< #锚定单词的开始
    如:\<grep匹配包含以grep开头的单词的行。    
\> #锚定单词的结束
    如grep\>匹配包含以grep结尾的单词的行
^  #锚定行的开始 
    如:^grep匹配所有以grep开头的行。    
$  #锚定行的结束 
    如:grep$匹配所有以grep结尾的行。
[] #匹配一个指定范围内的字符
    如‘[Gg]rep‘匹配Grep和gre

  举例:

[[email protected] yyy]$ sudo grep -n \<grep stop.sh 
2:PROCESS=`ps -ef|grep zzz|grep -v grep|grep -v PPID|awk { print $2}`
3:num=`ps -ef|grep zzz|grep -v grep|wc -l`
[[email protected] yyy]$ sudo grep -n ^e stop.sh 
9:echo "$num processes be killed"
[[email protected] yyy]$ sudo grep -n i$ stop.sh 
7:  kill -9 $i
[[email protected] yyy]$ sudo grep -n [Gg]rep stop.sh 
2:PROCESS=`ps -ef|grep zzz|grep -v grep|grep -v PPID|awk { print $2}`
3:num=`ps -ef|grep zzz|grep -v grep|wc -l`

  最后,如果需要将查询内容输出到文本中就可以:

[[email protected] yyy]$ ll
total 59976
-rwxrwxrwx 1 root root        0 Oct 19 17:20 1.txt
drwxr-xr-x 2 root root     4096 May 31 20:46 lib
-rw-r--r-- 1 root root    39936 Jul 18 15:30 zzz.jar
-rw-r--r-- 1 root root    39792 Jun  3 14:38 zzz.jar.20160714
-rw-r--r-- 1 root root    39835 Jul 14 09:31 zzz.jar.20160718
-rw------- 1 root root 61218369 Oct 19 17:20 nohup.out
-rw-r--r-- 1 root root      275 Jun  1 15:05 stop.sh
[[email protected] yyy]$ sudo grep mongo nohup.out >1.txt 
[[email protected] yyy]$ ll
total 61184
-rwxrwxrwx 1 root root  1159937 Oct 19 17:20 1.txt
drwxr-xr-x 2 root root     4096 May 31 20:46 lib
-rw-r--r-- 1 root root    39936 Jul 18 15:30 zzz.jar
-rw-r--r-- 1 root root    39792 Jun  3 14:38 zzz.jar.20160714
-rw-r--r-- 1 root root    39835 Jul 14 09:31 zzz.jar.20160718
-rw------- 1 root root 61286858 Oct 19 17:20 nohup.out
-rw-r--r-- 1 root root      275 Jun  1 15:05 stop.sh

 



以上是关于linux搜索过滤--grep的主要内容,如果未能解决你的问题,请参考以下文章

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

linux搜索过滤--grep

Linux文本过滤搜索器grep与egrep的常用正则表达式与用法

linux三剑客(grep 过滤)

Linux之grep命令

第二天 linux 过滤,正则表达式