跟着鸟哥学习linux学习笔记之grep命令

grep命令

1、作用

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

2、格式

grep [options]

3、主要参数( 如果忘记可参考 man grep)

[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。

 4、示例

  • 4.1passwd文件中查找出root和imix字符串的在第几行(passwd是系统文件,专门存放用户的相关信息
    grep –n “root\|imix” /etc/passwd
  • 4.2承接4.1,查询出满足条件的前4行和后3行的信息
    grep –n –B 4 –A 3 “imix” /etc/passed
  • 4.3輸入 df 后,將 tmpfs 相关的那几行取消(df是用来检查linux服务器的文件系统的磁盘空间占用情况)   
    df |grep -v tmpfs

5、正则

字符 意义及示例
^word

意义:查询字符串(word)在行首

示例:查询行首为#开始的哪一行,并列出行号

grep -n '^#' express.txt

word$

意义:查询字符串(word)在行尾

示例:将行尾为!的哪一行列举出来,并且显示出行号

grep -n '!$' express.txt

.

意义:匹配任何单个字符

示例:查询字符串以eve、eae、eee、 e e但不能有(ee )

grep -n 'e.e' express.txt

\

意义:转义字符,将特殊符号的特殊意义去掉

示例:查询还有单引号 ' 的哪一行

grep -n \' express.txt

 *

意义:匹配前一个字符≥0次

示例:查询出 (es) (ess) (esss) 等等的字串所在的行

grep -n 'ess*'

 [list]

 意义:查询[]中列出指定的字符

示例:查询 aay,afy,aly

grep -n 'a[afl]y' express.txt

 [n1-n2]

 意义:查询出指定的字符

 示例: 查询出以大写字母开头的行

grep -n '^[A-Z]' express.txt

 [^list]

 意义:查询出不是list集合行(注: 那個^[]内时,代表的意义是反向选择)

示例:查询出字符串oog,ood但不能是oot

grep -n 'oo[^t]' express.txt

  \{n,m\}

 意义:

\{n,m\}查询出某个字符连续出现n到m次

\{n,\}查询出某个字符连续出现n次以上   

\{n\}查询出某个字符连续出现n次

示例:查询出在g与g之间有2个到3个o存在的行

grep -n 'go\{2,3\}g' express.txt

 

  

猜你喜欢

转载自lintaozhou.iteye.com/blog/2390471