当前位置: 首页 > news >正文

Linux 学习 awk 和sed 命令使用

      1. 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
  1. 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 是一种处理文本文件的语言&#xff0c;是一个强大的文本分析工具。 awk 通过提供编程语言的功能&#xff0c;如变量、数学运算、字符串处理等&#xff0c;使得对文本文件的分析和操作变得非常灵活和高效。 之所以叫 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 是一种流行的服务器端脚本语言&#xff0c;广泛用于 web 开发。它支持多种编程范式&#xff0c;包括面向对象编程&#xff08;OOP&#xff09;。面向对象编程是一种编程风格&#xff0c;它使用“对象”来设计软件&#xff0c;其中对象是数据和行为的集合…...

应急响应(1)-同事电脑

一、现象 重要时间节点&#xff0c;同事反馈桌面有鼠标移动、随机断网&#xff1b;发现登录账户多了一个&#xff0c;由于电脑长时间没有更改过密码&#xff0c;导致忘记密码无法登录。随机联系进行应急处理。 二、排查 2.1、密码重置/删除 由于同事忘记密码导致无法进行登录…...

class 023 随机快速排序

这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. https://space.bilibili.com/8888480?spm_id_f…...

如何理解矩阵的复数特征值和特征向量?

实数特征值的直观含义非常好理解&#xff0c;它就是在对应的特征向量方向上的纯拉伸/压缩。 而复数特征值&#xff0c;我们可以把它放在复数域中理解。但是这里给出一个不那么简洁、但是更加直观的理解方式&#xff1a;把它放在实空间中。那么复数特征值表现的就是旋转等比放大…...

怎么查看网站是否被谷歌收录,查看网站是否被搜索引擎收录5个方法与步骤

要查看网站是否被谷歌&#xff08;Google&#xff09;或其他搜索引擎收录&#xff0c;是网站管理和SEO&#xff08;搜索引擎优化&#xff09;中的一个重要环节。以下是查看网站是否被搜索引擎收录5个方法与步骤&#xff0c;帮助您确认网站是否被搜索引擎成功索引&#xff1a; …...

Java工具--stream流

Java工具--stream流 过滤&#xff08;filter&#xff09;统计求最大最小和均值求和&#xff08;sum&#xff09;过滤后&#xff0c;对数据进行统计 遍历&#xff08;map&#xff09;规约&#xff08;reduce&#xff09;排序&#xff08;sorted&#xff09;去重&#xff08;dist…...

什么是 JWT?它是如何工作的?

松哥最近辅导了几个小伙伴秋招&#xff0c;有小伙伴在面小红书时遇到这个问题&#xff0c;这个问题想回答全面还是有些挑战&#xff0c;松哥结合之前的一篇旧文和大伙一起来聊聊。 一 无状态登录 1.1 什么是有状态 有状态服务&#xff0c;即服务端需要记录每次会话的客户端信…...

微信小程序使用picker,数组怎么设置默认值

默认先显示请选择XXX。然后点击弹出选择列表。如果默认value是0的话&#xff0c;他就直接默认显示数组的第一个了。<picker mode"selector" :value"planIndex" :range"planStatus" range-key"label" change"bindPlanChange&qu…...

Springboot生成树工具类,可通过 id/code 编码生成 2.0版本

优化工具类中&#xff0c;查询父级时便利多次的问题 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缓存即高速缓冲存储器&#xff0c;是位于CPU与主内存间的一种容量较小但速度很高的存储器。CPU高速缓存可以分为一级缓存&#xff0c;二级缓存&#xff0c;部分高端CPU还具有三级缓存&#xff0c;每一级缓存中所储存的全部数据都是…...

算法训练营打卡Day18

目录 二叉搜索树的最小绝对差二叉搜索树中的众数二叉树的最近公共祖先额外练手题目 题目1、二叉搜索树的最小绝对差 力扣题目链接(opens new window) 给你一棵所有节点为非负值的二叉搜索树&#xff0c;请你计算树中任意两节点的差的绝对值的最小值。 示例&#xff1a; 思…...

【leetcode】169.多数元素

boyer-moore算法最简单理解方法&#xff1a; 假设你在投票选人 如果你和候选人&#xff08;利益&#xff09;相同&#xff0c;你就会给他投一票&#xff08;count1&#xff09;&#xff0c;如果不同&#xff0c;你就会踩他一下&#xff08;count-1&#xff09;当候选人票数为0&…...

MyBatis<foreach>标签的用法与实践

foreach标签简介 实践 demo1 简单的一个批量更新&#xff0c;这里传入了一个List类型的集合作为参数&#xff0c;拼接到 in 的后面 &#xff0c;来实现一个简单的批量更新 <update id"updateVislxble" parameterType"java.util.List">update model…...

R语言Shiny包新手教程

R语言Shiny包新手教程 1. 简介 Shiny 是一个 R 包&#xff0c;用于创建交互式网页应用。它非常适合展示数据分析结果和可视化效果。 2. 环境准备 安装R和RStudio 确保你的计算机上安装了 R 和 RStudio。你可以从 CRAN 下载 R&#xff0c;或从 RStudio 官网 下载 RStudio。…...

[大象快讯]:PostgreSQL 17 重磅发布!

家人们&#xff0c;数据库界的大新闻来了&#xff01;&#x1f4e3; PostgreSQL 17 正式发布&#xff0c;全球开发者社区的心血结晶&#xff0c;带来了一系列令人兴奋的新特性和性能提升。 发版通告全文如下 PostgreSQL 全球开发小组今天&#xff08;2024-09-26&#xff09;宣布…...

CHI trans--Home节点发起的操作

总目录&#xff1a; CHI协议简读汇总-CSDN博客https://blog.csdn.net/zhangshangjie1/article/details/131877216 Home节点能够发起的操作&#xff0c;包含如下几类&#xff1a; Home to Subordinate Read transactionsHome to Subordinate Write transactionsHome to Subor…...

Rust和Go谁会更胜一筹

在国内&#xff0c;我认为Go语言会成为未来的主流&#xff0c;因为国内程序员号称码农&#xff0c;比较适合搬砖&#xff0c;而Rust对心智要求太高了&#xff0c;不适合搬砖。 就个人经验来看&#xff0c;Go语言简单&#xff0c;下限低&#xff0c;没有什么心智成本&#xff0c…...

记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 统…...

Tinke完整技术指南:NDS游戏资源提取与逆向工程深度解析

Tinke完整技术指南&#xff1a;NDS游戏资源提取与逆向工程深度解析 【免费下载链接】tinke Viewer and editor for files of NDS games 项目地址: https://gitcode.com/gh_mirrors/ti/tinke Tinke是一款专业的任天堂DS&#xff08;NDS&#xff09;游戏资源提取与逆向工程…...

OpenClaw 消息路由与广播机制深度解析

OpenClaw 消息路由与广播机制深度解析 作者: Social Agent (小社) 日期: 2026-03-18 研究模块: channels/channel-routing + broadcast-groups + group-messages 一、消息路由的核心设计 1.1 确定性路由,而非 AI 决策 OpenClaw 消息路由最重要的设计决策是:路由是确定性的…...

A Survey for Image Quality Assessment: From Handcrafted Features to Deep Learning

1. 图像质量评估的起源与核心挑战 当你用手机拍完一张照片&#xff0c;系统自动弹出"画质优化建议"时&#xff0c;背后就是图像质量评估&#xff08;IQA&#xff09;技术在发挥作用。这项技术最早可以追溯到上世纪70年代电视信号传输质量检测&#xff0c;当时工程师们…...

外汇延迟套利检测系统演进:从规则到AI的行为博弈

1. 项目概述&#xff1a;当速度优势不再是护城河 在电子外汇交易的世界里&#xff0c;速度套利一直是一个古老而又充满技术魅力的游戏。它的核心逻辑简单到近乎纯粹&#xff1a;如果你能比你的交易对手更快地获取到市场价格变动的信息&#xff0c;你就能在对手更新其报价之前&a…...

如何为iOS 14.0-16.6.1设备安装TrollStore:TrollInstallerX完整指南

如何为iOS 14.0-16.6.1设备安装TrollStore&#xff1a;TrollInstallerX完整指南 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 如果你正在寻找一种可靠且简单的方法在i…...

Python包安装全攻略:从pip、conda到离线安装,总有一种方法适合你

Python包安装全攻略&#xff1a;从pip、conda到离线安装&#xff0c;总有一种方法适合你 在Python开发中&#xff0c;依赖管理是每个开发者必须掌握的核心技能。无论是数据科学家搭建机器学习环境&#xff0c;还是Web开发者部署Django应用&#xff0c;都离不开Python包的安装与…...

如何在Windows上轻松安装ViGEmBus虚拟手柄驱动解决游戏兼容性问题

如何在Windows上轻松安装ViGEmBus虚拟手柄驱动解决游戏兼容性问题 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否曾经遇到过这样的困扰&#xff1a;手…...

深入Linux网络栈:当虚拟机网络中断时,如何像侦探一样解读‘transmit queue timed out‘内核警告

深入Linux网络栈&#xff1a;当虚拟机网络中断时&#xff0c;如何像侦探一样解读transmit queue timed out内核警告 在虚拟化环境中&#xff0c;网络中断往往是最令人头疼的问题之一。当虚拟机突然失去网络连接&#xff0c;而宿主机的物理网卡却显示一切正常时&#xff0c;问题…...

FPGA开发实战:从问题定位到系统化解决,构建硬件设计核心能力

1. 项目概述&#xff1a;当FPGA问题来袭&#xff0c;你的第一反应是什么&#xff1f;如果你正在设计一个嵌入式系统&#xff0c;或者在调试一块数字电路板时&#xff0c;遇到了一个用微控制器&#xff08;MCU&#xff09;难以解决的时序、并行处理或接口协议问题&#xff0c;你…...

别再硬怼tabular了!用LaTeX的minipage环境搞定不规则子图排版(附代码对比)

LaTeX排版革命&#xff1a;用minipage环境实现不规则子图的高效布局 在学术写作和技术文档中&#xff0c;图片排版常常成为LaTeX用户的痛点。当遇到需要将不同尺寸的子图组合成一个整体时&#xff0c;传统方法往往陷入复杂的表格嵌套和间距调整的泥潭。本文将介绍一种更优雅的解…...