grep 命令系列:如何在 Linux/UNIX 中使用 grep 命令
来源:互联网 发布:淘宝买家怎么导出订单 编辑:程序博客网 时间:2024/05/19 13:28
grep 命令系列:如何在 Linux/UNIX 中使用 grep 命令
grep 命令用来搜索文本,或从给定的文件中搜索行内包含了给定字符串或单词的文件。通常来说,grep 显示匹配到的行。使用 grep 来搜索包括一个或多个正则表达式匹配到的文本行,然后只显示匹配到的行。grep 被视作在 Linux/ Unix 系统中最有用的命令之一。
你知道吗
grep 这个名字,来源于一个 Unix/Linux 中的古老的行编辑器 ed 中执行相似操作的命令:g/re/p
grep 命令的语法
语法如下所示:grep 'word' 文件名grep 'word' 文件1 文件2 文件3grep '字符串1 字符串2' 文件名cat 某个文件 | grep '某个东西'command | grep '某个东西'command 选项1 | grep '数据'grep --color '数据' 文件名
怎么样使用 grep 来搜索一个文件
搜索 /etc/passwd 文件下的 boo 用户,输入:$ grep boo /etc/passwd
输出内容:
foo:x:1000:1000:foo,,,:/home/foo:/bin/ksh
可以使用 grep 去强制忽略大小写。例如,使用 -i 选项可以匹配 boo, Boo, BOO 和其他组合:
$ grep -i "boo" /etc/passwd
递归使用 grep
你可以递归地使用 grep 进行搜索。例如,在文件目录下面搜索所有包含字符串“192.168.1.5”的文件$ grep -r "192.168.1.5" /etc/
或者是:
$ grep -R "192.168.1.5" /etc/
示例输出:
/etc/ppp/options:# ms-wins 192.168.1.50/etc/ppp/options:# ms-wins 192.168.1.51/etc/NetworkManager/system-connections/Wired connection 1:addresses1=192.168.1.5;24;192.168.1.2;
你会看到搜索到 192.168.1.5 的结果每一行都前缀以找到匹配的文件名(例如:/etc/ppp/options)。输出之中包含的文件名可以加 -h 选项来禁止输出:
$ grep -h -R "192.168.1.5" /etc/
或者
$ grep -hR "192.168.1.5" /etc/
示例输出:
# ms-wins 192.168.1.50# ms-wins 192.168.1.51addresses1=192.168.1.5;24;192.168.1.2;
使用 grep 去搜索文本
当你搜索 boo 时,grep 命令将会匹配 fooboo,boo123, barfoo35 和其他所有包含 boo 的字符串,你可以使用 -w 选项去强制只输出那些仅仅包含那个整个单词的行(LCTT译注:即该字符串两侧是英文单词分隔符,如空格,标点符号,和末端等,因此对中文这种没有断字符号的语言并不适用。)。$ grep -w "boo" file
使用 grep 命令去搜索两个不同的单词
使用 egrep 命令如下:$ egrep -w 'word1|word2' /path/to/file
(LCTT 译注:这里使用到了正则表达式,因此使用的是 egrep 命令,即扩展的 grep 命令。)
统计文本匹配到的行数
grep 命令可以通过加 -c 参数显示每个文件中匹配到的次数:$ grep -c 'word' /path/to/file
传递 -n 选项可以输出的行前加入匹配到的行的行号:
$ grep -n 'root' /etc/passwd
示例输出:
1:root:x:0:0:root:/root:/bin/bash1042:rootdoor:x:0:0:rootdoor:/home/rootdoor:/bin/csh3319:initrootapp:x:0:0:initrootapp:/home/initroot:/bin/ksh
反转匹配(不匹配)
可以使用 -v 选项来输出不包含匹配项的内容,输出内容仅仅包含那些不含给定单词的行,例如输出所有不包含 bar 单词的行:$ grep -v bar /path/to/file
UNIX/Linux 管道与 grep 命令
grep 常常与管道一起使用,在这个例子中,显示硬盘设备的名字:# dmesg | egrep '(s|h)d[a-z]'
显示 CPU 型号:
# cat /proc/cpuinfo | grep -i 'Model'
然而,以上命令也可以按照以下方法使用,不使用管道:
# grep -i 'Model' /proc/cpuinfo
示例输出:
model : 30model name : Intel(R) Core(TM) i7 CPU Q 820 @ 1.73GHzmodel : 30model name : Intel(R) Core(TM) i7 CPU Q 820 @ 1.73GHz
如何仅仅显示匹配到内容的文件名字?
使用 -l 选项去显示那些文件内容中包含 main() 的文件名:$ grep -l 'main' *.c
最后,你可以强制 grep 以彩色输出:
$ grep --color vivek /etc/passwd
示例输出:
作者:Vivek Gite
延伸阅读
《Linux常用命令》系列技术文章整理收藏
1Linux 系统下查看硬件信息命令大全
2grep 命令系列:如何在 Linux/UNIX 中使用 grep 命令
3linux下用shell、sed批量替换多个文件中的字符串
4linux中scp命令和scp命令用法大全
5Linux 经常使用的命令
6新手应知应会的Linux命令
7积累linux常用的命令
8详解Linux系统中md5sum命令的用法
9Linux中,创建聊天服务器、移除冗余软件包的实用命令
10Linux中7个用来浏览网页和下载文件的命令
11在Linux系统中使用tar命令压缩和解压文件的教程
1212个linux进程管理命令介绍
13Linux Ctrl+Z的使用方法
145个经典有趣的 Linux 命令行技巧
15Centos下查看网卡的实时流量命令
16linux、unix下快速清空文件的方法
1711个让你吃惊的 Linux 终端命令
1814 个 Linux grep 命令的例子
19Linux 中 sort 命令的14个有用的范例(一)
20Apache、PHP 隐藏版本信息
21解决ssh登录后闲置时间过长而断开连接
22centos 用户相关的命令
23grep如何忽略过滤.svn目录以及如何忽略多个目录
24centos 用户相关的命令
25解决ssh登录后闲置时间过长而断开连接
26Shell脚本统计文件行数的8种方法
27Linux xargs命令
28Linux文本搜索工具grep使用详解
29linux系统用什么命令查看端口的占用情况?
30Linux如何提高大文件的拷贝效率以节约时间
31Linux查看系统日志的一些常用命令总结
32Ubuntu文本编辑器vi使用方向键出错的解决方法
334个最流行的Linux平台开源代码编辑器
3420条Linux命令面试问答
35在 Linux 下你所不知道的 df 命令的那些功能
36Linux ps 命令实战
37Linux系统中下载文件的wget命令操作实例
38Linux正则表达式使用指南
39CentOS 6.5系统设置固定IP的方法
40Linux如何使用awk文本处理工具进行数组排序
41Linux tar命令Tar Time Stamp in the Future问题解决方法
42CentOS如何将DVD设置为默认yum源以便DVD中软件的下载安装
43Linux下查看内存使用情况的方法总结
44Linux如何使用locate命令查找数据查找指定文件
45Linux find命令中-path -prune参数作用详细介绍
46Linux curl使用简单介绍
- grep 命令系列:如何在 Linux/UNIX 中使用 grep 命令
- grep 命令系列:如何在 Linux/UNIX 中使用 grep 命令
- 如何使用Unix/Linux grep命令——磨刀不误砍柴工系列
- Unix/Linux中grep命令的使用
- Linux系列:grep命令使用
- Linux / Unix Command: grep命令
- linux中grep命令
- linux中grep命令
- linux中grep命令
- linux中grep命令
- linux中grep命令
- linux中grep命令
- Linux grep 命令使用
- Linux Grep 命令使用
- Linux grep 命令使用
- linux命令系列之grep
- Linux中grep命令使用介绍
- unix-grep命令详解
- 枚举类型详解
- JS创建函数:函数声明和函数表达式
- Java中write()系列方法
- MyEclipse10破解教程(亲测可用)
- 将人脸数据库生成为.txt文件
- grep 命令系列:如何在 Linux/UNIX 中使用 grep 命令
- tomcat配置文件server.xml详解
- structs2 请求json数据
- C++——数据结构之 顺序队列 链式队列?
- Android studio 安装篇
- hdu 1242 Rescue(优先队列)
- Miller_Rabin · 大数
- 双向一对多外联关系-XML配置属性
- 欢迎使用CSDN-markdown编辑器