Linux 学习 awk 和sed 命令使用
-
-
-
awk 命令
awk 是一种处理文本文件的语言,是一个强大的文本分析工具。
awk 通过提供编程语言的功能,如变量、数学运算、字符串处理等,使得对文本文件的分析和操作变得非常灵活和高效。
之所以叫 awk 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
这里我们有一个文本文件test.txt
1 2 3 4 5 6 test1 test2 test3 test4 There are some words there are some numbers
-
-
打印整行:
# awk '{print}' test.txtroot@hcss-ecs-c2b8:/var/test# awk '{print}' test.txt
1 2 3 4 5 6
test1 test2 test3 test4
There are some words
there are some numbers
打印特定列:
# awk '{print $1, $2}' test.txt
root@hcss-ecs-c2b8:/var/test# awk '{print $1, $2}' test.txt
1 2
test1 test2
There are
there are
root@hcss-ecs-c2b8:/var/test# awk '{print $3, $4}' test.txt
3 4
test3 test4
some words
some numbers
使用分隔符指定列:
# awk -F',' '{print $1, $2}' test.txt
打印行数:
# awk '{print NR, $0}' file
root@hcss-ecs-c2b8:/var/test# awk '{print NR,$0}' test.txt
1 1 2 3 4 5 6
2 test1 test2 test3 test4
3 There are some words
4 there are some numbers
打印行数满足条件的行:
awk '/pattern/ {print NR, $0}' file
计算列的总和:
# awk '{sum += $1} END {print sum}' file
# test.txt
1 2 3 4 5
2
3
4
5
6
test1 test2 test3 test4
There are some words
there are some numbersroot@hcss-ecs-c2b8:/var/test# vim test.txt
# 只会计算数字类型,不能转化为数字的不影响求和
root@hcss-ecs-c2b8:/var/test# awk '{sum += $1} END {print sum}' test.txt
21
打印最大值:
awk 'max < $1 {max = $1} END {print max}' file
格式化输出:
awk '{printf "%-10s %-10s\n", $1, $2}' file
-
sed 命令
Linux sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]参数说明:
- -e
先创建一个sed的测试文本文件
root@hcss-ecs-c2b8:/var/test# vim sed_test.txt
root@hcss-ecs-c2b8:/var/test# cat sed_test.txt
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
Google
Taobao
Runoob
Tesetfile
Wiki
添加文本
# 现在我们在第3行后添加一行文本"Newline"
root@hcss-ecs-c2b8:/var/test# sed 3a\NewLine sed_test.txt
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
NewLine
Linux test
Google
Taobao
Runoob
Tesetfile
Wiki
# cat查看发现他并不会去修改原文件
root@hcss-ecs-c2b8:/var/test# cat sed_test.txt
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
Google
Taobao
Runoob
Tesetfile
Wiki
# 我们去第三行前添加文本
root@hcss-ecs-c2b8:/var/test# sed 3i\NewLine sed_test.txt
HELLO LINUX!
Linux is a free unix-type opterating system.
NewLine
This is a linux testfile!
Linux test
Google
Taobao
Runoob
Tesetfile
Wiki
删除指定行数的文本
root@hcss-ecs-c2b8:/var/test# nl sed_test.txt 1 HELLO LINUX! 2 Linux is a free unix-type opterating system. 3 This is a linux testfile! 4 Linux test 5 Google6 Taobao7 Runoob8 Tesetfile9 Wikiroot@hcss-ecs-c2b8:/var/test# nl sed_test.txt | sed '2d'1 HELLO LINUX! 3 This is a linux testfile! 4 Linux test 5 Google6 Taobao7 Runoob8 Tesetfile9 Wikiroot@hcss-ecs-c2b8:/var/test# nl sed_test.txt | sed '2,6d'1 HELLO LINUX! 7 Runoob8 Tesetfile9 Wikiroot@hcss-ecs-c2b8:/var/test# nl sed_test.txt | sed '6d'1 HELLO LINUX! 2 Linux is a free unix-type opterating system. 3 This is a linux testfile! 4 Linux test 5 Google7 Runoob8 Tesetfile9 Wiki
替换文本
root@hcss-ecs-c2b8:/var/test# cat sed_test.txt
#原文本
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
Google
Taobao
Runoob
Tesetfile
Wiki
# 替换后的文本
root@hcss-ecs-c2b8:/var/test# sed -e 's/LINUX/UNIX/g' sed_test.txt
HELLO UNIX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
Google
Taobao
Runoob
Tesetfile
Wikiroot@hcss-ecs-c2b8:/var/test# sed -e 's/Taobao/JD/g' sed_test.txt
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
Google
JD
Runoob
Tesetfile
Wiki
思考:
- grep 更适合单纯的查找或匹配文本
- sed 更适合编辑匹配到的文本
- awk 更适合格式化文本,对文本进行较复杂格式处理
简单编写一个shell脚本使用这两个命令
# alarm_handler.sh
#!/bin/bash# 监控系统资源使用情况,
threshold=$1 # 设置CPU使用率的阈值为threshold%。
cpu_usage=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
# 第二题中出现。grep、sed 和 awk 结合,从输出中提取并计算CPU空闲百分比。# 使用 bc 计算判断CPU使用率是否超过阈值。
if [[ $(echo "$cpu_usage > $threshold" | bc -l) -eq 1 ]]; thenecho "High CPU usage detected: $cpu_usage%"# 如果CPU使用率超过阈值,使用 mail 命令发送邮件给 admin@example.com。echo "High CPU Usage warning,Current CPU Usage: $cpu_usage%"
elseecho "CPU usage within normal range: $cpu_usage%"
fi
root@hcss-ecs-c2b8:/var/test# vim alarm_handler.sh
root@hcss-ecs-c2b8:/var/test# chmod +x alarm_handler.sh
root@hcss-ecs-c2b8:/var/test# ./alarm_handler.sh 20
CPU usage within normal range: 0%
root@hcss-ecs-c2b8:/var/test# ./alarm_handler.sh 30
CPU usage within normal range: 3.2%
没跑任何服务的原因,cpu几乎没有任何占用
相关文章:
Linux 学习 awk 和sed 命令使用
awk 命令 awk 是一种处理文本文件的语言,是一个强大的文本分析工具。 awk 通过提供编程语言的功能,如变量、数学运算、字符串处理等,使得对文本文件的分析和操作变得非常灵活和高效。 之所以叫 awk 是因为其取了三位创始人 Alfred Aho&#x…...
双端搭建个人博客
1. 准备工作 确保你的两个虚拟机都安装了以下软件: 虚拟机1(Web服务器): Apache2, PHP虚拟机2(数据库服务器): MariaDB2. 安装步骤 虚拟机1(Web服务器) 安装Apache2和PHP 更新系统包列表: sudo apt update安装Apache2: sudo apt install apache2 -y安装PHP及其Apac…...
PHP 面向对象编程
PHP 面向对象编程 PHP 是一种流行的服务器端脚本语言,广泛用于 web 开发。它支持多种编程范式,包括面向对象编程(OOP)。面向对象编程是一种编程风格,它使用“对象”来设计软件,其中对象是数据和行为的集合…...
应急响应(1)-同事电脑
一、现象 重要时间节点,同事反馈桌面有鼠标移动、随机断网;发现登录账户多了一个,由于电脑长时间没有更改过密码,导致忘记密码无法登录。随机联系进行应急处理。 二、排查 2.1、密码重置/删除 由于同事忘记密码导致无法进行登录…...
class 023 随机快速排序
这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. https://space.bilibili.com/8888480?spm_id_f…...
如何理解矩阵的复数特征值和特征向量?
实数特征值的直观含义非常好理解,它就是在对应的特征向量方向上的纯拉伸/压缩。 而复数特征值,我们可以把它放在复数域中理解。但是这里给出一个不那么简洁、但是更加直观的理解方式:把它放在实空间中。那么复数特征值表现的就是旋转等比放大…...
怎么查看网站是否被谷歌收录,查看网站是否被搜索引擎收录5个方法与步骤
要查看网站是否被谷歌(Google)或其他搜索引擎收录,是网站管理和SEO(搜索引擎优化)中的一个重要环节。以下是查看网站是否被搜索引擎收录5个方法与步骤,帮助您确认网站是否被搜索引擎成功索引: …...
Java工具--stream流
Java工具--stream流 过滤(filter)统计求最大最小和均值求和(sum)过滤后,对数据进行统计 遍历(map)规约(reduce)排序(sorted)去重(dist…...
什么是 JWT?它是如何工作的?
松哥最近辅导了几个小伙伴秋招,有小伙伴在面小红书时遇到这个问题,这个问题想回答全面还是有些挑战,松哥结合之前的一篇旧文和大伙一起来聊聊。 一 无状态登录 1.1 什么是有状态 有状态服务,即服务端需要记录每次会话的客户端信…...
微信小程序使用picker,数组怎么设置默认值
默认先显示请选择XXX。然后点击弹出选择列表。如果默认value是0的话,他就直接默认显示数组的第一个了。<picker mode"selector" :value"planIndex" :range"planStatus" range-key"label" change"bindPlanChange&qu…...
Springboot生成树工具类,可通过 id/code 编码生成 2.0版本
优化工具类中,查询父级时便利多次的问题 import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.mutable.MutableLong; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.spri…...
17、CPU缓存架构详解高性能内存队列Disruptor实战
1.CPU缓存架构详解 1.1 CPU高速缓存概念 CPU缓存即高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储器。CPU高速缓存可以分为一级缓存,二级缓存,部分高端CPU还具有三级缓存,每一级缓存中所储存的全部数据都是…...
算法训练营打卡Day18
目录 二叉搜索树的最小绝对差二叉搜索树中的众数二叉树的最近公共祖先额外练手题目 题目1、二叉搜索树的最小绝对差 力扣题目链接(opens new window) 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。 示例: 思…...
【leetcode】169.多数元素
boyer-moore算法最简单理解方法: 假设你在投票选人 如果你和候选人(利益)相同,你就会给他投一票(count1),如果不同,你就会踩他一下(count-1)当候选人票数为0&…...
MyBatis<foreach>标签的用法与实践
foreach标签简介 实践 demo1 简单的一个批量更新,这里传入了一个List类型的集合作为参数,拼接到 in 的后面 ,来实现一个简单的批量更新 <update id"updateVislxble" parameterType"java.util.List">update model…...
R语言Shiny包新手教程
R语言Shiny包新手教程 1. 简介 Shiny 是一个 R 包,用于创建交互式网页应用。它非常适合展示数据分析结果和可视化效果。 2. 环境准备 安装R和RStudio 确保你的计算机上安装了 R 和 RStudio。你可以从 CRAN 下载 R,或从 RStudio 官网 下载 RStudio。…...
[大象快讯]:PostgreSQL 17 重磅发布!
家人们,数据库界的大新闻来了!📣 PostgreSQL 17 正式发布,全球开发者社区的心血结晶,带来了一系列令人兴奋的新特性和性能提升。 发版通告全文如下 PostgreSQL 全球开发小组今天(2024-09-26)宣布…...
CHI trans--Home节点发起的操作
总目录: CHI协议简读汇总-CSDN博客https://blog.csdn.net/zhangshangjie1/article/details/131877216 Home节点能够发起的操作,包含如下几类: Home to Subordinate Read transactionsHome to Subordinate Write transactionsHome to Subor…...
Rust和Go谁会更胜一筹
在国内,我认为Go语言会成为未来的主流,因为国内程序员号称码农,比较适合搬砖,而Rust对心智要求太高了,不适合搬砖。 就个人经验来看,Go语言简单,下限低,没有什么心智成本,…...
记HttpURLConnection下载图片
目录 一、示例代码1 二、示例代码2 一、示例代码1 import java.io.*; import java.net.HttpURLConnection; import java.net.URL;public class Test {/*** 下载图片*/public void getNetImg() {InputStream inStream null;FileOutputStream fOutStream null;try {// URL 统…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
土建施工员考试:建筑施工技术重点知识有哪些?
《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...
