linux 命令grep

  grep命令用来搜索文本,或从给定的文件中搜索行内包含了给定字符串或单词的文件。通常来说,grep显示匹配的行。使用grep来搜索包括一个或多个正则表达式匹配到的文本行,然后只显示匹配到的行。

  grep命令的语法:

  grep  ‘word’  文件名

  grep  ‘word’  文件1  文件2  文件3

  grep  ‘字符串1  字符串2’  文件名

  commad  |  grep  ‘ 某个东西 ’

  commad  选项1  |  grep  ‘ 数据 ’

  grep  --color  ‘数据’  文件名


  使用grep来搜索一个文件

搜索文件

  搜索 /etc/passwd文件下的Linux用户,输入:

[root@centos-64-min ~]# grep Linux /etc/passwd

  输出内容:

Linux:x:500:500::/home/Linux:/bin/bash

  可以使用grep去强制忽略大小写。例如使用 -i 选项可以匹配linux  Linux  、LINUX和其他组合:

grep -i Linux /etc/passwd


递归使用grep

可以递归地使用grep进行搜索。例如在文件目录下搜索所有包含的字符串"192.168.57.9"的文件

[root@centos-64-min ~]# grep -r "192.168.57.9" /etc/  

或是

[root@centos-64-min ~]# grep -R "192.168.57.9" /etc/

输出结果  

/etc/sysconfig/network-scripts/ifcfg-eth0:IPADDR=192.168.57.9

你会看到搜索到192.168.57.9的结果每一行都前缀以找到匹配的文件名。输出之中包含的文件名可以加-h选项来禁止输出:

如:

[root@centos-64-min ~]# grep -hR "192.168.57.9" /etc/
IPADDR=192.168.57.9

或是

[root@centos-64-min ~]# grep -h -R "192.168.57.9" /etc/
IPADDR=192.168.57.9


使用grep去搜索文本

当你搜索Linux是,grep命令将会匹配Linux,linux123,Linux35和其他包含Linux的字符串 ,你可以用-w选项强制只输出那些仅仅包含那个整个单词的行。

[root@centos-64-min ~]# grep -w linux /etc/passwd


使用grep命令搜索两个不同的单词

egrep命令如下:

egrep  -w  ‘word1 | word2 ’ 、path/to/file

这里使用到了正则表达式,因此使用的是egrep命令,即扩展的grep命令。


统计文本匹配的行数

grep命令可以通过加-c参数显示每个文件中匹配到的次数:

grep  -c  ‘word’  /path/to/file

传递-n选项可以输出的航前加入匹配到的行的行号:

grep  -n  ‘root’  /etc/passwd

如:

[root@centos-64-min ~]# grep -n 'root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin


反转匹配

使用-v选项来输出不包含匹配项的内容,输出内容仅仅包含那些不含给定单词的行,例如输出所有不包含root的行

[root@centos-64-min ~]# grep -n 'root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin
[root@centos-64-min ~]# grep -n "root" /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin
[root@centos-64-min ~]# grep -v "root" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
Linux:x:500:500::/home/Linux:/bin/bash


管道与grep命令

grep常常与管道一起使用

如显示磁盘设备的名称:

[root@centos-64-min ~]# dmesg | egrep '(s|h)d[a-z]'
NMI watchdog disabled (cpu0): hardware events not enabled
sd 2:0:0:0: [sda] 41943040 512-byte logical blocks: (21.4 GB/20.0 GiB)
sd 2:0:0:0: [sda] Write Protect is off
sd 2:0:0:0: [sda] Mode Sense: 61 00 00 00
sd 2:0:0:0: [sda] Cache data unavailable
sd 2:0:0:0: [sda] Assuming drive cache: write through
sd 2:0:0:0: [sda] Cache data unavailable
sd 2:0:0:0: [sda] Assuming drive cache: write through
sda: sda1 sda2
sd 2:0:0:0: [sda] Cache data unavailable
sd 2:0:0:0: [sda] Assuming drive cache: write through
sd 2:0:0:0: [sda] Attached SCSI disk
dracut: Scanning devices sda2 for LVM logical volumes vg_centos64min/lv_root vg_centos64min/lv_swap
EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts:
SELinux: initialized (dev sda1, type ext4), uses xattr

显示CPU的型号:

[root@centos-64-min ~]# cat /proc/cpuinfo | grep -i "Model"
model : 42
model name : Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz
[root@centos-64-min ~]#

当然也可以不适用管道

[root@centos-64-min ~]# grep -i 'Model' /proc/cpuinfo
model : 42
model name : Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz
[root@centos-64-min ~]# grep 'Model' /proc/cpuinfo
[root@centos-64-min ~]# grep 'model' /proc/cpuinfo
model : 42
model name : Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz


仅仅显示匹配到内容的文件名字

grep -l  ‘main’  *.c

或者可以强制grep以彩色输出:

grep --color vivek  /etc/passwd

linux 命令grep的更多相关文章

  1. 【linux】linux命令grep + awk 详解

    linux命令grep  +  awk 详解 grep:https://www.cnblogs.com/flyor/p/6411140.html awk:https://www.cnblogs.com ...

  2. Linux 命令 - grep: 正则搜索文本

    grep 搜索文本文件中与指定正则表达式匹配的行 命令格式 grep [OPTIONS] PATTERN [FILE...] 命令参数 Generic Program Information --he ...

  3. Linux 命令——grep | 正则表达式

    感觉讲的很详细,瞬间懂了grep,正则. from: here 简介 grep (global search regular expression(RE) and print out the line ...

  4. 菜鸟学Linux命令:grep配合ls等使用

    linux grep命令 (global search regular expression(RE) and print out the line )是一种强大的文本搜索工具,它能使用正则表达式搜索文 ...

  5. Linux命令-grep

    grep命令用于对文本进行搜索,格式为“grep [选项] [文件]” 搜索某个关键词:"grep 关键词 文本文件" 参数说明 -b 将可执行文件当做文本文件来搜索 -c 仅显示 ...

  6. (转)Linux命令grep

    场景:grep命令在文件搜索中经常会使用到,所以熟练掌握该命令对于日常日志搜索相当有必要! Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.g ...

  7. [ Linux 命令 ] grep

    一.grep是什么? Linux grep命令是用于查找文件里符合条件行的shell命令. 二.为什么要使用grep? 在查找文件内容时候,通过使用grep指定条件,可以快速定位到文件里字符串所在的行 ...

  8. 日志快速筛选 之 linux命令grep|uniq|wc|awk

    以前我个人的观念是,在线上运行的东西尽量不要记什么流水日志. 但是后来我变了,发现在线上记日志是一个绝对有必要的东西,尤其是在当下很流行的微服务的推动下,没有日志的帮助,犹如一个睁眼瞎,排查问题基本靠 ...

  9. linux命令-grep+正则表达式用法

    目标文件/etc/passwd,使用grep命令或egrep 1.显示出所有含有root的行:egrep 'root' passwd 2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的 ...

随机推荐

  1. Unity之坐标转换

    1.世界坐标→屏幕坐标:camera.WorldToScreenPoint(transform.position);这样可以将世界坐标转换为屏幕坐标.其中camera为场景中的camera对象. 2. ...

  2. html5技术介绍

    什么是HTML5 1>网页的5.0版本 1> 2014年才定制完HTML5的标准,历时8年 2> 移动先行 为什么要用HTML5 1> 跨平台 利用HTML5编写的UI界面能运 ...

  3. js使用CSS将图片转换成黑白(灰色、置灰)

    详细内容请点击 可能早就知道,像汶川这种糟糕的日子网站全灰在IE下是可以轻松实现的(filter: gray;),不过,当时,其他浏览器是无解的. 不过,时代发展,如今,CSS3的逐步推进,我们也开始 ...

  4. Android中Json数据读取与创建

    一:  Json的特性和在数据交互中的地位就不用说了,直接看案例. 首先在android studio中创建assets文件目录,用于存放Json数据文件,android studio 1.3 默认项 ...

  5. 每天一道LeetCode--409 .Longest Palindrome

    Given a string which consists of lowercase or uppercase letters, find the length of the longest pali ...

  6. 番外篇 之 C#委托

    对于上一节 番外篇之C#多线程的反思 反思一:   Thread th = new Thread(参数); ////参数的总结 ////首先,第一情况,对于 Thread th = new Threa ...

  7. 收藏的js学习小例子

    1.js模拟java里的Map function Map(){ var obj = {} ; this.put = function(key , value){ obj[key] = value ; ...

  8. 关于DB2 SQL0805N找不到程序包的错误解决办法

    DB2在执行SQL语句的时候会使用内部定义的包(package)来保持不同级别的游标的稳定性, 包的名字就是“ULLID.SYSLH2XX“. DB2 里面默认的时候会创建3个这样的包即SYSLH20 ...

  9. pip在windows域下使用代理安装package方法

    首先说明下,本人在公司使用windows域账户代理上网,用pip在线安装package 返回ProxyError,类似Tunnel connection failed: 407 authenticat ...

  10. Facade模式和Mediator模式

    相同的目的:把某种策略施加到另一组对象上. Facade从上面施加策略. 其使用是明显且受限的.当策略涉及范围广泛并且可见时. 约定的关注点.都同意使用Facade而不是隐藏于其下的对象. Media ...