【Linux入门学习之】grep命令详解

article/2025/6/24 6:16:12

一、grep命令的功能是分析一行信息,若其中有我们所需要的信息,就将其拿出来。需要注意的是它以整行为单位进行数据的选取。

语法:grep [-acinv] [--color=auto] '要查找的字符串' filename

-a:将binary文件以text文件的方式查找数据

-c:计算找到查找字符串的次数

-i:忽略大小写的不同

-n:输出行号

-v:反向选择,显示出没有查找字符串的内容的行

--color-auto:将找到的字符串以特殊颜色显示

 

下面介绍几个使用grep命令的实例。

范例:

先将/etc目录下的manpath.config文件拷贝至/tmp文件夹下,来作实验。

cd /tmp

cp/etc/manpath.config .

将此文件中有包含MANPATH的那一行取出来。

Cat manpath.config| grep 'MANPATH'

范例:

与上例子相反,只要没有包含MANPATH的那一行就取出来。

cat manpath.config| grep -v 'MANPATH'


 

二、下面介绍grep的一些高级参数。

grep [-A] [-B] [--color=auto]'查找字符串' filename'

-A:后面可加数字,为after的意思,除了列出该行以外,后续的n行也列出来。

-B:后面可加数字,为before的意思,除了列出该行以外,前面的n行也列出。

范例:

用dmesg列出内核信息,然后用grep找出包含eth的那行,并且显示 行号。而且将关键字的前2行和后3行也列出来。

Dmesg | grep -n-A3 -B2 –color=auto 'eth'


 

在关键字的显示上,grep可以用—color=auto来将关键字用特殊颜色显示。但是每次使用grep都得加上这个信息很麻烦,于是可以用alias进行一下处理就OK了。可以在~/.bashrc内加上这一行:alias grep='grep –color=auto'。

 

三、下面进行一些基础正则表达式的练习。

1、利用中括号[]来查找集合字符

比如我要查找man或者men字符串,可以这样来查找:

grep -n 'm[ae]n'manpath.config


Note:中括号[]里面不论有几个字符,它都只代表某一个字符。

2、反向选择^的使用

查找包含man而且前面没有/的那一行:

grep -n '[^/]man'manpath.config


查找包含man但是前面不是小写字符的那一行:

grep -n'[^a-z]man' manpath.config

要取得有数字的那一行:

grep -n '[0-9]'manpath.config

考虑到语系对于编码顺序的影响,因此除了连续编码使用减号-之外,你也可以使用如下的方法取得前面测试的结果:

grep -n'[[:digit:]]' manpath.config


关于语系编码:

不同语系的编码数据并不相同,所以会造成数据选取结果的区别。举例来说,在英文大小写的编码顺序中,zh_CN.big5及C这两种语系的输出结果分别是:

LANG=C时:012345...ABCD...Z...abcd...z

LANG=zh_CN时:012345...aAbBcCdD...zZ。

因此在使用正则表达式时,需要特别留意当时环境的语系为何,否则可能会发现与别人不同的选取结果。

另外,为了避免这样编码所造成的英文和数字的选取问题,有些特殊的符号需要我们了解以下。主要有下面这些:

[:alnum:]代表英文大小写字符及数字

[:blank:]代表空格和tab按键

[:punct:]代表标点符号

[:space:]任何会产生空白的字符

[:alpha:]代表任何英文大小写字符

[:digit:]代表数字

[:lower:]代表小写字符

[:upper:]代表大写字符

 

3、行首^和行尾$字符

列出行首为MANPATH_MAP的行:

grep -n'^MANPATH_MAP' manpath.config

列出开头是大写字符的那一行:

grep -n '^[A-Z]'manpath.config

列出开头不是英文字母的行:

grep -n'^[^a-zA-Z]' manpath.config

Note:那个^符号在字符集合(中括号[])之内和外面是不同的!!!在[]内面代表反向选择,在[]外面代表定位在行首的意思。

 

反过来思考:我们要找出行尾结束为感叹号.的行:

grep -n '\.$'manpath.config

因为小数点具有特殊的意义,所以必须用转义字符加以解除其特殊意义。

查找出空白行:

grep -n '^$'manpath.config

 

4、任意一个字符.与重复字符*

在bash当中,通配符*可以用来代表任意(0或多个)字符,但是正则表达式并不是通配符,两者之间是不相同的。至于正则表达式当中:

.:代表绝对有一个字符的意思。

*:代表重复前一个字符0到无穷多次的意思,为组合形态。

实例:

查找包含一个o以上的行,需要oo*:

grep -n 'oo*'manpath.config

查找以g开头与以g结尾,中间至少存在一个o的行:

grep -n 'goo*g'manpath.config

 

5、限定连续RE字符范围

在前面的例题中,我们可以利用.与RE字符及*来设置0到无穷多个重复字符。那如果我要限制一个范围区间内的重复字符呢,比如要找出2-5个o的连续字符串,就要用到限定范围的字符{}了。

但是{}的符号在shell有特殊意义,因此要用到转义字符\。

实例:

找出g后面有两个到五个o后面再接一个g的字符串:

grep -n '\{2,5\}g'manpath.config

如果是2个以上呢:

grep -n '\{2,\}g'manpath.config

这样就OK了。

转载于:https://www.cnblogs.com/xiajun/archive/2011/12/19/2298623.html


http://chatgpt.dhexx.cn/article/pdg6IaLs.shtml

相关文章

shell中grep命令详解

grep(Globel Search Regular Expression and Printing out the line)全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,是一个对行进行操作的搜索工作,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家…

linux grep -v多个关键字,Linux grep 命令详解

Grep 是 Global Regular Expression Print 的缩写,它搜索指定文件的内容,匹配指定的模式,默认情况下输出匹配内容所在的行。注意,grep 只支持匹配而不能替换匹配到的内容。 基本语法 语法格式: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] […

shell命令三剑客之grep命令详解

文章目录 1. 通配符(globbing)2. grep2.1 linux系统支持的三种形式的grep命令 3. 正则表达式3.1 扩展正则表达式 4. IP的正则4.1 ip地址的类别4.2 ip地址的正则 5. shell中的特殊字符6. 练习 正则表达式和grep、vim、awk、sed等的关系: 正则表…

tail、less、grep命令详解

linux查看日志命令 1、tail命令2、cat、more和less命令3、grep命令 1、tail命令 该命令主要用于监听文件新增的内容,实时查看文件新增的内容。 tail [选项] 文件名 选项:-n 行数:显示文件最近的n行数据-f : 监听文件新增的内容tail查看的文本内容 常用…

Linux-Grep命令详解

一、基础的grep命令 1.1 -A -B -C参数的使用 命令格式:grep -A m “关键字” xxxx(文件) 显示出关键字所在行以及关键字所在的以下m行内容 [rootlocalhost ~]# grep -A 10 “game” /etc/passwd #搜索出关键字“game” 并打印出关键字所在的…

Linux - grep命令详解

目录 grep命令 模式: 模式 : 其实就是一些条件的组合,用来表达某个意思 常见选项: -o 选项 --》 只显示匹配的内容 --only-matching -i 选项 --》 忽略大小写,都匹配显示出来 --ignore-case -n 选项 --》 给匹…

一看就懂-grep命令详解

转载自:https://www.zsythink.net/archives/1733 如果你是一个新手,请从头阅读这篇文章,如果你只是忘记了grep命令的一些常用选项,直接查看文章尾部的总结部分即可。 先说说grep命令能做什么? 我们可以使用grep命令在…

netdata mysql_netdata使用

简介 一直想找一个合适的系统监控软件,简单好用易安装易扩展易维护,转悠了好久没有找到合适的,偶然间在开源中国中看到了netdata,第一眼看到界面眼前就为之一亮,安装后更是觉得大赞,好东西分享一下。 Netda…

Docker系列 酷炫的服务器性能监测工具netdata

转自我的个人博客https://blognas.hwb0307.com。欢迎关注! 前言 此文内容目前处于BETA版本 我之前在《Linux基础 目录管理的个人实践》曾经介绍过一款叫Ward的VPS性能监控应用,当时对它的privilegedtrue带来的安全性问题有点担忧。近期忽然发现它的Docke…

netdata安装方式

相关地址 : (建议按照官网文档进行操作) github : https://github.com/netdata/netdata 官网 : https://learn.netdata.cloud/docs/agent/packaging/installer/ 官网-docker安装 : https://hub.docker.com/r/netdata/netdata/ // 镜像拉取 : docker pull netdata/netdata// doc…

Netdata与centos7

Netdata是一个高度优化的Linux守护进程,它为Linux系统,应用程序,SNMP服务等提供实时的性能监测。 Github: https://github.com/firehol/netdata/wiki/Installation (安装教程) 开源中国:http://www.oschina.net/p/netdata/simila…

linux-netdata监控配置

netdata部署步骤记录 安装步骤的总结 1.wget https://github.com/netdata/netdata/archive/v1.16.1.tar.gz tar -zxvf v1.16.1.tar.gz 解压 2.# CentOS / Red Hat Enterprise Linux yum install autoconf automake curl gcc git libmnl-devel libuuid-devel openssl-devel …

netdata监控服务器主机(包括Docker容器)

效果 Docker部署 创建挂载目录 mkdir -p /data/netdata/{netdatacache,netdatalib}docker运行 docker run -d --namenetdata \-p 19999:19999 \-v /data/netdata/netdatalib:/var/lib/netdata \-v /data/netdata/netdatacache:/var/cache/netdata \-v /etc/passwd:/host/etc…

centos7 安装Netdata

1. 软件介绍 Netdata是一款Linux系统实时性能监测工具,以web的可视化方式展示系统及应用程序的实时运行状态。前端响应快,UI很整洁,操作方面,支持图表重置,缩放。具体优点如下: 界面酷炫:inte…

运维监控之——云原生运维监控报警架构(prometheus+grafana+netdata+Thanos+Alertmanager+Consul)

成果展示: 一个项目单独拎出来: 总体大屏: ​​​​​​​K8S大屏: Linux 主机大屏: 说明: 使用Prometheus(https://github.com/prometheus)原生的k8s服务发现驱动,采集容器化信息&#xff1b…

ARM机器使用netdata监控

ARM机器使用netdata监控 安装 下载地址 https://github.com/netdata/netdata/releases 找到对应平台的版本下载 此处使用了netdata-aarch64-latest.gz.run 下载下来直接sh netdata-aarch64-latest.gz.run 进行安装。 安装完成之后,可以通过在浏览器中访问htt…

非入侵式Linux 性能监控面板 NetData安装部署流程。

构建最佳的实时健康监控和性能故障排除解决方案: Netdata 是一款 Linux 性能实时监测工具.。以web的可视化方式展示系统及应用程序的实时运行状态(包括cpu、内存、硬盘输入/输出、网络等linux性能的数据)。 netdata官网:https:/…

openwrt - 性能监控 netdata

opkg open package management(opkg) 离线安装视频:https://www.youtube.com/watch?vEZtG8fmFewg 【笔记】openwrt - nginx配置反向代理(https下netdata不显示) https://lawsssscat.blog.csdn.net/article/details…

Netdata监控安装(汉化)

文章目录 Netdata安装部署<内网>软体下载修改脚本部署安装集群配置监控配置启动环境降低CPU占用Docker数据缺失 本教程主要描述内网环境下netdata汉化版本的安装过程 Netdata安装部署<内网> 软体下载 1、Netdata主程序&#xff1a; https://github.com/firehol/n…

Openwrt 手动安装 netdata 插件

环境&#xff1a; 硬件&#xff1a; 星际宝盒 IPQ4019 固件版本&#xff1a; OpenWrt R21.11.11 / LuCI Master (git-21.329.83689-00cb491) 起因&#xff1a; 首先 Netdata是一款开源的 、轻量的、跨平台的秒级数据收集与可视化呈现的Linux服务器性能监测工具&#xff0c;与Za…