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
相关推荐
2401_888423091 分钟前
网络编程-TCP的并发服务器构建
服务器·网络·tcp/ip
mCell4 小时前
Docker 进阶教程
运维·docker·容器
mCell4 小时前
Docker 入门教程
运维·docker·操作系统
祈祷苍天赐我java之术5 小时前
Linux 进阶之性能调优,文件管理,网络安全
java·linux·运维
ajassi20005 小时前
开源 C++ QT Widget 开发(七)线程--多线程及通讯
linux·c++·qt·开源
孤雪心殇5 小时前
如何安全,高效,优雅的提升linux的glibc版本
linux·后端·golang·glibc
王火火(DDoS CC防护)6 小时前
服务器网络带宽不足要怎么处理?
运维·服务器
潇凝子潇6 小时前
获取服务器指标的信息
linux·运维·服务器
FreeBuf_6 小时前
Chrome高危零日漏洞PoC公开,已被用于野外攻击
linux·运维·服务器·安全·web安全
初学者_xuan8 小时前
Linux程序与进程和进程程序基础以及程序管理(零基础掌握版)
运维·计算机网络·网络安全·零基础·学习方法·linux程序管理