Shell三剑客之grep

前言:

Shell三剑客是grep、sed和awk三个工具的简称,因功能强大,使用方便且使用频率高,因此被戏称为三剑客,熟练使用这三个工具可以极大地提升运维效率。

grep是文本查找或搜索工具,用于查找内容包含指定的范本样式的文本。它会一行一行循环匹配,匹配到相应的值时会先输出,然后换行继续匹配再换行直到所有的内容都匹配完。

1. 常用参数

bash 复制代码
-n:显示行号;
-i:忽略大小写;
-o:精准匹配;
-f:从文件每一行获取匹配模式;
-c:统计匹配的行数;
-w:匹配 整个单词;
-E:使用扩展正则表达式,相当于egrep;
-F :相当于fgrep,就是将pattern视为固定字符串。
-v:反转查找,显示不被 pattern 匹配到的行,相当于[^] 反向匹配;
-A:后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出来;
-B:后面可加数字,为 before 的意思,除了列出该行外,前面的 n 行也列出来;
-C:后面可加数字,为context 的意思,除了列出该行外,前后的n行也列出来。

2. 示例

**1)**查找多个文件中相同的内容

bash 复制代码
[root@test02 ~]# grep "NUMBER" file1.txt file2.txt
file1.txt:NUMBER=100
file2.txt:NUMBER=10

**2)**过滤以#开头的行和空白行

bash 复制代码
[root@test02 ~]# egrep -v "^#|^$"  a.txt 
fsjdf
fdfs

**3)**计算匹配项的数目

bash 复制代码
[root@test02 ~]# cat /etc/passwd| grep -c nologin
16

**4)**输出正则匹配到的内容

bash 复制代码
[root@test02 ~]# echo 'this is a test shell!' |grep -oE "[a-z]+"
this
is
a
test
shel

**5)**只显示匹配的字符串

bash 复制代码
[root@test02 ~]#  echo 'this is a test' |grep -o 'is'
is
is

**6)**匹配显示所有IP

bash 复制代码
[root@test02 ~]# ifconfig |grep -E -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
192.168.10.12
255.255.255.0
192.168.10.255
127.0.0.1
255.0.0.0

7**)删除K8S节点所有包含google的镜像**

bash 复制代码
root@node01:~# crictl rmi `crictl image | grep google | awk '{print $3}'` 
Deleted: registry.aliyuncs.com/google_containers/csi-external-health-monitor-controller:v0.10.0
Deleted: registry.aliyuncs.com/google_containers/snapshot-controller:v6.3.1
Deleted: registry.aliyuncs.com/google_containers/kube-webhook-certgen:v20230407
Deleted: registry.aliyuncs.com/google_containers/csi-provisioner:v3.6.0
Deleted: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.7.0
Deleted: registry.aliyuncs.com/google_containers/csi-resizer:v1.9.0
Deleted: registry.aliyuncs.com/google_containers/csi-snapshotter:v6.3.0
Deleted: registry.aliyuncs.com/google_containers/hostpathplugin:v1.9.0
Deleted: registry.aliyuncs.com/google_containers/kube-proxy:v1.29.0
Deleted: registry.aliyuncs.com/google_containers/livenessprobe:v2.11.0
Deleted: registry.aliyuncs.com/google_containers/coredns:v1.11.1
Deleted: registry.aliyuncs.com/google_containers/csi-attacher:v4.4.0
Deleted: registry.aliyuncs.com/google_containers/csi-node-driver-registrar:v2.9.0
Deleted: registry.aliyuncs.com/google_containers/nginx-ingress-controller:v1.8.2
相关推荐
ltl5 小时前
大多数「无锁」代码其实不是无锁的
linux
ltl5 小时前
Linux 内核的内存屏障:一个让我调了三天的 bug
linux
Dontla7 小时前
预置known_hosts如何防止中间人攻击(MITM)?(服务器公钥、服务器私钥)Runner、DNS污染、BGP劫持、同网络ARP欺骗、SSH握手
服务器·网络·ssh
Lonely 净土8 小时前
Rocky Linux 安装教程
linux·运维·服务器
光影少年8 小时前
RN的Fabric 渲染流程
运维·前端·javascript·react native·react.js·fabric
A 糖醋排骨8 小时前
grafana loki alloy轻量级日志采集
运维·grafana·loki
林间码客11 小时前
从DevOps到DevSecOps:构建现代软件交付的基石与护城河
大数据·运维·devsecops·devops
李白你好11 小时前
Windows 离线 Linux 提权辅助查询工具
linux
Lust Dusk12 小时前
记一次Linux应急响应题目解析
linux·运维·服务器·网络·安全·网络安全
ShineWinsu13 小时前
对于Linux:五种IO模型以及非阻塞IO的详细解析
linux·c++·面试·io·阻塞·非阻塞·fcntl