Shell编程(三)grep sed awk文本处理三剑客

news2024/11/16 14:03:34

上一章:

Shell编程(二)_做测试的喵酱的博客-CSDN博客

一、ps命令

指令: ps
作用: 主要是查看服务器的进程信息
选项含义:
-e:等价于 ‘-A’ ,表示列出全部的进程
-f:显示全部的列(显示全字段) 


二、 grep

grep主要用于过滤。对文本按行来过滤。如果某一行包含要搜索的关键字,则会把这一整行输出出来。

2.1 grep基础使用方法

查看grep 帮助文档 grep --help

[root@ecs-39233 chenshuai]# grep --help
Usage: grep [OPTION]... PATTERN [FILE]...
Search for PATTERN in each FILE or standard input.
PATTERN is, by default, a basic regular expression (BRE).
Example: grep -i 'hello world' menu.h main.c

grep应用的两种形式

形式一:对一个文件/多个文件,进行搜索。

grep [OPTION]... PATTERN [FILE1,FILE2 ... ]

[OPTION] 可选项,可填写以下内容 

PATTERN 关键字,被搜索的关键字。从文件FILE1 FILE2 搜索包含关键字 PATTERN 的行。

 形式二:执行命令时,在命令结果中搜索数据

some command | grep [option] pattern

[OPTION] 可选项,可填写以下内容 

PATTERN 关键字,被搜索的关键字。可以有没有引号,可以单引号,可以双引号。

如果没有引号,PATTERN 关键字中不能有空格。 

单引号,PATTERN 关键字中的变量不能解析,搜索的什么就是什么

双引号,可以解析PATTERN 关键字中的变量。

将一个命令(command)的输出,通过管道符|传给后面的grep命令。

在第一个命令的输出结果中,搜索关键字pattern

选项作用
-i忽略大小写
-c只输出匹配行的数量
-n显示行号
-r递归搜索
-E支持拓展正则表达式
-W匹配整个单词
-I只列出匹配的文件名
-F不支持正则,按字符串字面意思进行匹配

例子1

搜索在当前Linux系统中(/etc/passwd),是否存在某一个用户。

是否存在root用户

grep root /etc/passwd
[root@ecs-39233 ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@ecs-39233 ~]# 

是否存在miao用户

[root@ecs-39233 ~]# grep miao /etc/passwd
[root@ecs-39233 ~]# 

例子2 

查看当前系统,java进程信息

ps -ef |grep java

查看tomcat进程信息

ps -ef |grep tomcat

例子3  忽略大小写 -i

忽略大小写 -i

grep 默认不忽略大小写。 grep -i 忽略大小写。

不忽略大小写

[root@ecs-39233 ~]# echo "Hello world" |grep hello
[root@ecs-39233 ~]# 

忽略大小写

[root@ecs-39233 ~]# echo "Hello world" |grep -i hello
Hello world

例子3  统计总数量 -c

统计总数量 -c

查看Linux用户文件。/etc/passwd

[root@ecs-39233 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

这种nologin结尾的用户,是没有登录权限的用户。

统计一下 /etc/passwd 中,有多少个用户没有登录权限。-c

[root@ecs-39233 ~]# grep -c "/sbin/nologin" /etc/passwd
16

例子4 搜索多个文件

1、搜索多个文件

在 test_while.sh test_read_n.sh 这两个文件中,搜索"/bin/bash" 字符串

[root@ecs-39233 ~]# grep "/bin/bash" test_while.sh test_read_n.sh
test_while.sh:#!/bin/bash
test_read_n.sh:#!/bin/bash

2、对目录进行过滤 -r

我想在/chenshuai 目下,对所有的文件进行搜索。搜索"/bin/bash" 字符串

grep -r "/bin/bash" /chenshuai
[root@ecs-39233 chenshuai]# grep -r "/bin/bash" /chenshuai
/chenshuai/study_shell.sh:#!/bin/bash
/chenshuai/until.sh:#!/bin/bash
/chenshuai/miao_test.sh:#!/bin/bash

3、过滤时,只打印文件名称。不打印命中的字符串 -l

grep -rl "/bin/bash" /chenshuai
/chenshuai/study_shell.sh
/chenshuai/until.sh
/chenshuai/miao_test.sh

例子5 过滤目标行的前后数据

显示目标行的后几行数据 -A

显示目标行的前几行数据-B

查看grep 帮助文档

grep --help

查看grep帮助文档,中的-A 用法。("\-A" 转义)

grep --help | grep "\-A"
[root@ecs-39233 ~]# grep --help | grep "\-A"
  -A, --after-context=NUM   print NUM lines of trailing context

显示目标行的后几行数据(-A ,after)

查看-A 这一行,及后3行数据。

grep --help | grep -A3 "\-A"

 

 

查看- B这一行,及前4行的数据。

 

 

2.2 grep + 正则

2.2.1 基础正则

^ 以x开头

$ 以x结尾

.

*

[]

[^]

在文件中搜索,以"r"开头的字符串

grep '^r' /etc/passwd

2.2.2 扩展正则 grep -E 或者 egrep

扩展正则:(常用)

 {}

()

|

+

?

在 文件中,匹配手机号

grep -E '^1[3456789]\d{9}$' /etc/xxx.log
egrep '^1[3456789]\d{9}$' /etc/xxx.log


二、 sed

流编辑器,对文件逐行进行处理

两种形式


三、 awk

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/438996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【珍藏版】SWAT模型十七项热点融合技术呈现,提升SWAT模型应用创新点

本次共十七个实践案例 1)遥感产品和SWAT模型快速建模 2)基于水文响应单元(HRU)的水资源时空分布特征 3)基于自定义流域与河道的SWAT模型建模与分析 4)子流域划分原理及其对模型不确定性的影响 5)坡度划分原理及其对模型不确定性的影响 6)DEM数据空…

站在程序猿的角度理解:UDP 协议

哈喽,大家好~我是你们的老朋友: 保护小周ღ,本期为大家带来的是 网络基础原理中的 UDP 协议,从什么协议?,认识 UDP 协议,UDP 的报文格式,UDP 传输大文件时的策略,以及 UD…

蓝库云|制造业该如何利用WMS仓库管理系统赋能企业发展

在数字化时代,制造业需要更加高效、智能、灵活地管理仓库,以满足市场的需求。WMS仓库管理系统作为一种先进的仓库管理工具,蓝库云认为WMS系统可以帮助制造企业实现数字化转型升级,提高仓库管理效率,降低成本&#xff0…

HuggingFace过去七天最流行的AI模型一览——预训练大模型绝对王者

HuggingFace是目前最火热的AI社区,很多人称之为AI模型的GitHub。包括Google、微软等很多知名企业都在上面发布模型。 HuggingFace简介:https://www.datalearner.com/blog/1051636550099750 而HuggingFace上提供的流行的模型也是大家应当关注的内容。本…

ChatGPT4写贪吃蛇游戏(Notion)[pygame的学习]

这里我使用的是Notion写出来的贪吃蛇,开始使用百度的文心一言来试下效果,生成了好几次的代码都是有bug,所以生成代码这块还得是ChatGPT。这篇主要就是了解下pygame库的一些方法,当然在没有安装这个库的,需要先安装&…

【浅谈 new 与 delete】

目录: 前言new 与 delete内置类型自定义类型operator new 与 operator deletenew 和 delete 实现原理定位new 总结 前言 打怪升级:第39天 在C语言中,我们动态申请内存的方法是使用malloc函数,它的同胞兄弟还有calloc 和realloc&a…

php使用tcpdf,通过html生成的pdf文件,合同章(图片)错位?需要怎么解决

php使用tcpdf,通过html生成的pdf文件,合同章有错位?需要怎么解决? 1、html下的排版正确,如图: 2、html代码,如图 3、生成pdf后的文件,如图 $pdf->Image(),计算一下x、…

【QT】详细介绍Qt的窗口属性:Qt::WA_DeleteOnClose属性

目录 1. close()2. WA_DeleteOnClose属性3. 测试3.1 设置了 Qt::WA_DeleteOnClose 属性3.2 未设置 Qt::WA_DeleteOnClose 属性 4. 测试代码 1. close() 当我们创建一个窗口(MainWindow, Widget, Dialog, QMessageBox, 等等)后,我们一般会调用…

matlab绘制折线图基本操作

本篇博客主要总结matlab绘制折线图的基本操作,使用的函数是plot函数,关于plot的函数语法规则,这里不再赘述,可以参考matlab官方文档,https://ww2.mathworks.cn/help/matlab/ref/plot.html#d124e1037051,不看…

GIS开源库GEOS库学习教程(三):空间关系/DE-9IM/谓词

1、DE-9IM 要判断两个多边形的关系,实际上属于几何图形空间关系判断。几何图形并不只有多边形一种,它包括点、线、面构成的任何图形,两两之间相互关系也有很多种,因此空间关系非常复杂。根据前人的研究,总结出了DE-9IM…

图论经典A-Star(A*) Algorithm最短路径,networkx,Python(1)

图论经典A-Star(A*) Algorithm最短路径,networkx,Python(1) A-Star Algorithm,即为A*(A星)算法,图的最短路径。 (1)A-Star(A*)算法需要事先知道起点和终点才…

PhpStorm 2022.3.2消除顶部Windows窗口白色区域

问题图片: 解决方法:勾选Merge main menu with window title 效果图:

第三章:JavaScript 脚本语言(一)

一、简介 JavaScript是web页面中的一种脚本语言,由客户端浏览器解释执行。不需要编译,主要作用是将静态页面转换成用户交互的动态页面。 JavaScript主要有三大部分:ECMAScript (核心),DOM(文档对象模型)&…

溯源取证-Linux内存取证 中难度篇

原谅我这么晚才出来文章,因为最近忙着录课,至于为啥没有基础篇,是因为靶场里没看见,哈哈 这个也是研究了好几个晚上才出来的东西,此处场景为linux环境下的rootkit病毒,我们通过这篇文章可以通过内存取证发…

Jmeter测试dubbo服务

1、什么是dubbo接口 Dubbo 接口是阿里巴巴开源的致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,dubbo框架告别了传统的web service的服务模式,进而改用provider和consumer模式进行服务。为什么是高性能的呢&#xff1f…

制作四个文件启动的镜像

一 环境搭建:vivado2018.3,petalinux2018.3, 1.petalinux环境设置 所使用的编译环境需要使用petalinux这个软件,《第五章Petalinux 的安装》里面的5.1-5.4。有详细的安装过程,按照第五章的顺序把环境搭建好。可以不装…

【PR 基础】新建序列

目录 一、新建序列 二、序列预设 三、设置 一、新建序列 在如下区域点击鼠标右键,选择 新建项目-》序列 或 点击工具栏中的文件-》新建-》序列 二、序列预设 (1)时基:就是指帧速率,也就是每秒播放帧的数量&#xf…

iOS Matter 操作证书签发方案

在 Matter 配网和操作中,为了信息交互的安全,在配网时,Commissioner自身需要完整的证书,同时需要向设备安装操作证书。 Matter 证书包含: RCA: 根证书 ICA: 中间证书,可选 NOC: 操作证书(注意有以下两种…

人工智能的前沿信息获取之使用文献数据库

人工智能的知识更新迭代非常迅速,因此对人工智能前沿的跟踪非常必要。本文主要介绍了使用文献数据库获取人工智能前沿信息的方法。 文献数据库是检索和下载论文的主要工具,对文献进行检索和下载的技巧在本科公共基础课《文献检索》或《信息检索》等类似…

家庭智能触摸面板开关一Homekit智能

触摸开关,即通过触摸方式控制的墙壁开关,其感官场景如同我们的触屏手机,只需手指轻轻一点即可达到控制电器的目的,随着人们生活品质的提高,触摸开关将逐渐将换代传统机械按键开关。 触摸开关控制原理 触摸开关我们把…