linux(centos8):用grep命令查找文件内容
一,grep的用途:
linux平台有最常用的三大文本处理工具:awk/sed/grep
grep的功能:搜索指定文件的内容,按照指定的模式匹配,并输出匹配内容所在的行。
需要注意的地方:grep只支持匹配但不能替换匹配到的内容
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,查看grep所属的rpm包
[root@blog ~]# whereis grep
grep: /usr/bin/grep /usr/share/man/man1/grep.1.gz /usr/share/man/man1p/grep.1p.gz /usr/share/info/grep.info.gz [root@blog ~]# rpm -qf /usr/bin/grep
grep-3.1-6.el8.x86_64
如果系统提示找不到grep命令或误删除了命令,
可以用dnf安装
[root@blog ~]# dnf install grep
三,查看grep的版本和帮助
1,查看版本
[root@blog ~]# grep --version
grep (GNU grep) 3.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.
2,查看帮助:
[root@blog ~]# grep --help
3,查看手册:
[root@blog ~]# man grep
四,grep命令的使用例子
1,列出所有的nginx进程
#-v:反向匹配,不显示包含指定字串的行
[root@blog ~]# ps auxfww | grep 'nginx: ' | grep -v grep
root 14470 0.0 0.0 71028 3340 ? Ss May17 0:00 nginx: master process /usr/local/openresty/nginx/sbin/nginx
nginx 14471 0.0 0.0 102764 7796 ? S May17 0:00 \_ nginx: worker process
nginx 14472 0.0 0.0 102436 6048 ? S May17 0:00 \_ nginx: worker process
nginx 14473 0.0 0.0 102436 6048 ? S May17 0:00 \_ nginx: worker process
nginx 14474 0.0 0.0 102436 6048 ? S May17 0:00 \_ nginx: worker process
nginx 14475 0.0 0.0 102436 5992 ? S May17 0:00 \_ nginx: worker process
nginx 14476 0.0 0.0 102436 6048 ? S May17 0:00 \_ nginx: worker process
nginx 14477 0.0 0.0 102436 6048 ? S May17 0:00 \_ nginx: worker process
nginx 14478 0.0 0.0 102436 6048 ? S May17 0:00 \_ nginx: worker process
2,列出所有登录成功/失败的记录
#-i: 忽略大小写
[root@blog log]# grep -i "accepted password" /var/log/secure
3,列出所有不是root登录的记录
[root@blog log]# last | grep -v root
4,输出文件名和行号
#-n: 输出匹配行在文件中的行号
[root@blog log]# grep -i -n "accepted password" *
说明:如果有多个文件匹配时,文件名也会显示出来
5,递归查询
# -R :递归查询目录下的子目录及文件
[root@blog nginxlogs]$ grep -R -i iphone *
如果不加 R,默认遇到目录不会继续查询
6,得到匹配到的记录数量
#-c:显示总共有多少行被匹配到,而不显示被匹配到的内容
[root@blog nginxlogs]$ grep -i -c iphone i_ssl.access.log
14811
7,只显示被匹配到的字符串,而不是匹配到的行
#-o:只显示被模式匹配的字符串
[root@blog nginxlogs]$ grep -i -o iphone i_ssl.access.log
8,只匹配单词:
#-w:被匹配的文本只能是单词,不能是单词中的一部分
[root@blog nginxlogs]$ grep -i -w advertise i_ssl.access.log
可以匹配: /home/index?advertise=b&now_page_id=0&app_key=iPhone
不能匹配: /advertisement/getList?uid=12345
9,多行显示:显示匹配到的行及其后指定数量的行
匹配accepted的行及其前10行
[root@blog log]# grep -B 10 -i "accepted" secure
匹配accepted的行及其后10行
[root@blog log]# grep -A 10 -i "accepted" secure
匹配accepted的行及其前后各10行
[root@blog log]# grep -C 10 -i "accepted" secure
10,只显示有匹配行的文件名:
#-l:列出文件内容符合指定的样式的文件名称
[root@blog log]# grep -i -R -l "accepted" *
五,grep中使用正则表达式的例子
1,集合:
. :任意一个字符。
[abc] :表示匹配一个字符,这个字符必须是abc中的一个。
[a-zA-Z] :表示匹配一个字符,这个字符必须是a-z或A-Z这52个字母中的一个。
[^123] :匹配一个字符,这个字符是除了1、2、3以外的所有字符
查询no和od中间是一个小写字母的账号
[root@blog log]# grep "no[a-z]od" /etc/passwd
2,开头和结尾:
查询以bash结尾的账号
[root@blog log]# grep 'bash$' /etc/passwd
查询所有以非bash结尾的账号
[root@blog log]# grep '[^bash]$' /etc/passwd
查询以r打头的账号:
[root@blog log]# grep '^r' /etc/passwd
查询所有不是r打头的账号
[root@blog log]# grep '^[^r]' /etc/passwd
3,出现次数
x\{m\} 重复字符x,m次,例子:'a\{5\}'匹配包含5个a的行。
x\{m,\} 重复字符x,至少m次,例子:'b\{5,\}'匹配至少有5个b的行。
x\{m,n\}重复字符x,至少m次,不多于n次,例子:'c\{5,10\}'匹配5--10个c的行
passwd 中o出现2次
[root@blog log]# grep "o\{2\}" /etc/passwd
passwd 中o出现最少1次最多2次
[root@blog log]# grep "o\{1,2\}" /etc/passwd
passwd 中o出现最少2次最多不限次
[root@blog log]# grep "o\{2,\}" /etc/passwd
4,其他例子:
显示一个目录下的所有目录:
[root@blog log]# ll -d */
或
[root@blog log]# ls -l |grep "^d"
列出一个目录下所有非目录的文件
[root@blog log]# ls -l |grep "^[^d]"
列出一个目录下,group和other有权读取的文件
[root@blog log]# ls -l |grep "^-...r..r.."
六,查看centos的版本
[root@blog ~]$ cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)
linux(centos8):用grep命令查找文件内容的更多相关文章
- Linux中通过grep命令检索文件内容和指定内容前后几行
原文链接: https://www.linuxidc.com/Linux/2017-11/148390.htm Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命 ...
- 利用grep命令查找文件内容
例如查找PHP源码某个函数的具体实现 grep -rn "PHP_FUNCTION(socket_accept)" ./ext
- linux 下用find命令查找文件,rm命令删除文件
linux 下用find命令查找文件,rm命令删除文件. 删除指定目录下指定文件find 要查找的目录名 -name .svn |xargs rm -rf 删除指定名称的文件或文件夹: find -t ...
- 24-Ubuntu-文件和目录命令-查找文件内容-grep
grep Linux系统中grep命令是一种强大的文本搜索工具. grep允许文本文件进行模式查找,所谓模式查找,又被称为正则表达式. 选项 含义 -n 显示匹配行及行号 -v 显示不包括匹配文本的所 ...
- 使用grep命令查找文件中符合”.stg.“行
某目录下有个test.txt,内容如下: www.stg.comwwstgcom 如果我这样去查找: $ grep '.stg.' test.txtwww.stg.comwwstgcom 发现第二个匹 ...
- linux系统使用grep命令提取文件的基名或者路径名
效果等于~]#dirname /etc/sysconfig/network-scripts/ifcfg-ens33 echo "/etc/sysconfig/network-scripts/ ...
- Linux中利用grep命令如何检索文件内容详解
前言 Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命令,同时vi命令也支持文件内容检索.下面来一起看看Linux利用grep命令检索文件内容的详细介绍. 方法 ...
- linux命令---查找文件中的内容
linux命令---查找文件中的内容 [yang@localhost ~]$ cat 1.txt |egrep '123456789|second'-------匹配123456789或者seco ...
- linux grep 查找文件内容
自试: wang@wang:~$ grep -i "*args*" ~/IGV01-SW/src/bzrobot_diagnostics/bzrobot_lightbelt_man ...
随机推荐
- Java 合并、拆分PPT幻灯片
序 在日常使用PPT时,为了便于操作和管理文档,时常会遇到需要将PPT幻灯片进行合并或拆分的情况.本文将通过Java程序来演示如何进行上述操作. 示例要点: 1. 合并PPT幻灯片 1.1 将第一个P ...
- IDEA2020.1使用LeetCode插件运行并调试本地样例
环境: idea2020.1 插件: LeetCode-editor 6.7 一.IDEA安装LeetCode插件 安装完成重启idea 打开插件 URL可以选择国服和世界服.LoginName和Pa ...
- Python3 环境搭建 保姆式 详细教程!真手把手教学!
本文我们将向大家介绍如何在本地搭建 Python3 开发环境. Python3 可应用于多平台包括 Windows.Linux 和 Mac OS X. Unix (Solaris, Linux, Fr ...
- php基础复习
基础捡漏: 1.短标记<??> 通过修改ini文件的short_open_tag或编译时 --enable-short-tags 可用 不推荐使用. 2.?>默认有隐藏分号结束,而文 ...
- 详细分析 Java 中实现多线程的方法有几种?(从本质上出发)
详细分析 Java 中实现多线程的方法有几种?(从本质上出发) 正确的说法(从本质上出发) 实现多线程的官方正确方法: 2 种. Oracle 官网的文档说明 方法小结 方法一: 实现 Runnabl ...
- spark 笔记2
一.Spark Shuffle 的发展 Spark 0.8及以前 Hash Based Shuffle Spark 0.8.1 为Hash Based Shuffle引入File Consolidat ...
- websocket+sockjs+stompjs详解及实例
最近有项目需求要用到websocket,刚开始以为很简单,但是随着遇到问题,深入了解,才知道websocket并不是想象中的那么简单,这篇文章主要是考虑websocket在客户端的使用. 1.http ...
- 国产化之路-安装达梦DM8数据库
专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...
- [JZOJ]2109 清兵线 题解
## [JZOJ]2109 清兵线 题解 **FIRST 题目大意** 给你一些正整数,这些正整数为数轴上若干个点代表的数.现求:假设从原点出发,走m以内(包括m)的距离最多能够访问多少个点,输出m- ...
- Java知识系统回顾整理01基础03变量01变量定义
定义: 变量:用来命名一个数据的标识符 一.什么是变量? 用具体实例定义变量 变量的定义是: 用来命名一个数据的标识符 1949 这是一个数字,代表某年 如果要命名这个数字,在java里就会写成: i ...