awk用法

文章目录

  • 一、awk工具
    • awk工作原理
    • AWK程序的结构
    • awk内置变量
  • 二、案例
    • 1.基础案列
    • 2.BEGIN END 运算
    • 3.数值与字符串的比较
    • 4.awk高级用法
    • 5. awk if语句
    • 6.BEGIN END 流程
    • 7.AWK 数组
    • 8.awk 循环

一、awk工具

awk工作原理

当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二行数据处理,不会默认输出
如果没有定义匹配条件默认是匹配所有数据行,awk隐含循环,条件匹配多少次动作就会执行多少次。
逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。

sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个"“字段"然后再进行处理。
awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。
在使用awk命令的过程中,可以使用逻辑操作符”
&&“表示"与”、“||表示"或”、"!“表示非”;还可以进行简单的数学运算,如+、一、*、/、%、^分别表示加、减、乘、除、取余和乘方。

AWK程序的结构

开始块(BEGIN block)
顾名思义,开始块就是在程序启动的时候执行的代码部分,并且它在整个过程中只执行一次。一般情况
下,我们在开始块中初始化一些变量。BEGIN是AWK的关键字,因此它必须是大写的。不过,开始块部
分是可选的,你的程序可以没有开始块部分。
主体块(Body Block)
对于每一个输入的行,都会执行一次主体部分的命令。默认情况下,对于输入的每一行,AWK都会执行
命令。注意:在主体块部分,没有关键字存在。
结束块(END Block)
它是在程序结束时执行的代码。END也是AWK的关键字,它也必须大写。与开始块相似,结束块也是可
选的

AWK 工作通过三个步骤
1、读(Read):从文件、管道或标准输入中读入一行然后把它存放到内存中
2、执行(Execute):对每一行数据,根据 AWK 命令按顺序执行。默认情况是处理每一行数据,也可
以指定模式
3、重复(Repeat):一直重复上述两个过程直到文件结束
在这里插入图片描述

awk内置变量

awk常用内置变量:$1、$2、NF、NR、$0
$1:代表第一列
$2:代表第二列以此类推
$0:代表整行
NF:一行的列数
NR:行数

二、案例

1.基础案列

awk '{print}' passwd                     #打印全文
awk -F: '{print $1}' passwd              #-F:以:切割,$1表示切割后只显示第一位
awk -F: '/root/{print $0}' passwd        #搜索包含root的行,$0打印一整行
awk -F: '/root/{print $1,$6}' passwd     #搜索包含root的行,$1,$6表示打印第一和第六列
awk -F: '{print NF}' passwd              #打印每一行的列数
awk -F: '{print NR}' passwd              #打印每一行的行号
awk -F: '{print NR,$0}' passwd           #打印每行的行号和内容
awk 'NR==2' /etc/passwd    #可以加print,也可以不加默认就是打印第二行awk 'NR==2{print}' /etc/passwd
awk -F: 'NR==2{print $1}' /etc/passwd    #打印第二行第一列
awk -F: '{print $NF}' /etc/passwd        #打印最后一列
awk 'END{print NR}' /etc/passwd          #打印总行号(实际打印最后一行行号)
awk 'END{print $0}' /etc/passwd          #打印最后一行(因为END是最后处理的,这时打印会打印最后一行)
awk -F: '/root/' /etc/passwd             #打印包含root的行
awk -F: '$1~/root/' /etc/passwd          #模糊查询第一列像root
awk -F: '$1~/ro/' /etc/passwd            #模糊查询第一列像roawk -F: '$7!~/nologin$/{print $1,$7}' /etc/passwd  
#模糊查询第一列不像nologin结尾.并且打印第一列和第七列awk -F: '{print "第"NR"行有"NF"列"}' /etc/passwd     #打印每行行号和列数
ifconfig ens33 | awk '/RX p/{print $5"字节"}'       #/RX p是对ens33的流量监控,显示流量多少
df -h | awk 'NR==2{print $4}'                      #根分区的可用量

awk ‘{print}’ passwd
在这里插入图片描述

awk -F: ‘{print $1}’ passwd
在这里插入图片描述

awk -F: ‘/root/{print $0}’ passwd
在这里插入图片描述

awk -F: ‘/root/{print $1,$6}’ passwd
在这里插入图片描述

awk -F: ‘{print NF}’ passwd
在这里插入图片描述

awk -F: ‘{print NR}’ passwd
在这里插入图片描述

awk -F: ‘{print NR,$0}’ passwd在这里插入图片描述

awk ‘NR==2’ /etc/passwd
在这里插入图片描述

awk -F: ‘NR==2{print $1}’ /etc/passwd
在这里插入图片描述

awk -F: ‘{print $NF}’ /etc/passwd
在这里插入图片描述

awk ‘END{print NR}’ /etc/passwd
在这里插入图片描述

awk ‘END{print $0}’ /etc/passwd
在这里插入图片描述

awk -F: ‘/root/’ /etc/passwd
在这里插入图片描述

awk -F: ‘$1~/root/’ /etc/passwd
在这里插入图片描述

awk -F: ‘$1~/ro/’ /etc/passwd
在这里插入图片描述

awk -F: '$7!~/nologin$/{print $1,$7}' /etc/passwd

在这里插入图片描述

awk -F: ‘{print “第"NR"行有"NF"列”}’ /etc/passwd
在这里插入图片描述

ifconfig ens33 | awk ‘/RX p/{print $5"字节"}’
在这里插入图片描述

df -h | awk ‘NR==2{print $4}’
在这里插入图片描述

2.BEGIN END 运算

逐行执行开始之前执行什么任务,结束之后再执行什么任务,用BEGIN、END
BEGIN一般用来做初始化操作,仅在读取数据记录之前执行一次
END一般用来做汇总操作,仅在读取完数据记录之后执行一次
awk 'BEGIN{x=10;print x}'             #BEGIN在处理文件之前,所以后面不跟文件名也不影响
awk 'BEGIN{x=10;print x+1}'           
awk 'BEGIN{print x+1}'                #不指定初始值,初始值就为0,如果是字符串,则默认为空
awk 'BEGIN{print 4.5-3}'              #小数也可以运算
awk 'BEGIN{print 3*4}'             
awk 'BEGIN{print 1/2}'            
awk 'BEGIN{print 2^3}'                #^和**都是幂运算

awk ‘BEGIN{x=10;print x}’
在这里插入图片描述

awk ‘BEGIN{x=10;print x+1}’
在这里插入图片描述

awk ‘BEGIN{print x+1}’
在这里插入图片描述

awk ‘BEGIN{print 4.5-3}’
在这里插入图片描述

awk ‘BEGIN{print 3*4}’
在这里插入图片描述

awk ‘BEGIN{print 1/2}’
在这里插入图片描述

awk ‘BEGIN{print 2^3}’
在这里插入图片描述

3.数值与字符串的比较

awk 'NR==5{print}' /etc/passwd       #打印行号为5的行
awk 'NR==5' /etc/passwd              #打印行号为5的行(和上个一样)
awk 'NR<5' /etc/passwd               #打印行号小于5的行
awk -F: '$3==0' /etc/passwd          #打印第三列等于0的行
awk -F: '$1=="root"' /etc/passwd     #打印第一行等于root的行
awk -F: '$3>=1000' /etc/passwd       #打印第三行大于等于1000的行

awk ‘NR==5{print}’ /etc/passwd
在这里插入图片描述

awk ‘NR==5’ /etc/passwd
在这里插入图片描述

awk ‘NR<5’ /etc/passwd
在这里插入图片描述

awk -F: ‘$3==0’ /etc/passwd
在这里插入图片描述

awk -F: ‘$1==“root”’ /etc/passwd
在这里插入图片描述

awk -F: ‘$3>=1000’ /etc/passwd
在这里插入图片描述

逻辑运算 && ||
&& 和 || 是逻辑运算符,用于组合多个条件并控制程序流程。
&& 要求所有条件都为真时才为真,否则为假。
|| 只要有一个条件为真就为真,全为假时才为假。
awk -F: '$3<10 || $3>=1000' /etc/passwd         #打印第三列小于10或者大于1000的行
awk -F: '$3>10 && $3<1000' /etc/passwd          #打印第三十列大于10并且小于1000的行
awk -F: 'NR>4 && NR<10' /etc/passwd             #打印行号大于4小于10的行
seq 200 | awk '$1%7==0 && $1~/7/'              
#seq输出一个200的序列传进awk中,$1表示序列中的每个数字,%7==0能否被7整除,并且$1~7,数字还要包含7

awk -F: ‘$3<10 || $3>=1000’ /etc/passwd
在这里插入图片描述

awk -F: ‘$3>10 && $3<1000’ /etc/passwd
在这里插入图片描述

awk -F: ‘NR>4 && NR<10’ /etc/passwd
在这里插入图片描述

seq 200 | awk ‘$1%7==0 && $1~/7/’
在这里插入图片描述

其他内置变量的用法FS(输入)、OFS、NR、FNR、RS、ORS
FS:输入字段的分隔符 默认是空格
OFS:输出字段的分隔符 默认也是空格
FNR:读取文件的记录数(行号),从1开始,新的文件重新重1开始计数
RS:输入行分隔符 默认为换行符
ORS:输出行分隔符 默认也是为换行符

awk 'BEGIN{FS=":"}{print $1}' passwd                #BEGIN设置字段分隔符 FS 为冒号 :,打印第一列
awk 'BEGIN{FS=":";OFS="---"}{print $1,$2}' passwd   #BEGIN额外设置输出分隔符为---
awk '{print FNR,$0}' passwd hosts                   #打印行号和内容,FNR是内置变量,行号为每个文件独立
awk '{print NR,$0}' passwd hosts                    #打印行号和内容,NR也是内置变量,但是行号是连续的
awk 'BEGIN{RS=":"}{print $0}' /etc/passwd           #RS:以:为分隔符,所有以:分开的都单独看作一行
awk 'BEGIN{ORS=" "}{print $0}' /etc/passwd          #ORS=" "以空格为输出行分割符

awk ‘BEGIN{FS=“:”}{print $1}’ passwd
在这里插入图片描述

awk ‘BEGIN{FS=“:”;OFS=“—”}{print $1,$2}’ passwd
在这里插入图片描述

awk ‘{print FNR,$0}’ passwd hosts
在这里插入图片描述

awk ‘{print NR,$0}’ passwd
在这里插入图片描述

awk ‘BEGIN{RS=“:”}{print $0}’ /etc/passwd
在这里插入图片描述

awk ‘BEGIN{ORS=" "}{print $0}’ /etc/passwd
在这里插入图片描述

4.awk高级用法

a=100
awk -v b="$a" 'BEGIN{print b}'    
#在awk程序开始之前,设置变量b的值为shell变量的值,然后执行awk程序并打印变量b的值。awk 'BEGIN{print "'$a'"}'
awk -v c=1 'BEGIN{print c}'
#都是赋值awk 'BEGIN{getline}/root/{print $0}' passwd   
#在处理任何输入之前,立即读取一行数据,然后搜索含有root的行(相当于排除第一行)seq 10 | awk '{getline;print $0}'        #跳过第一行,然后打印,显示偶数行
seq 10 | awk '{print $0;getline}'        #先打印,然后跳过一行,显示奇数行

a=100
awk -v b=“$a” ‘BEGIN{print b}’

在这里插入图片描述

awk ‘BEGIN{print "’$a’"}’
awk -v c=1 ‘BEGIN{print c}’
在这里插入图片描述

awk ‘BEGIN{getline}/root/{print $0}’ passwd
在这里插入图片描述

seq 10 | awk ‘{getline;print $0}’
seq 10 | awk ‘{print $0;getline}’

在这里插入图片描述

5. awk if语句

awk的if语句也分为单分支、双分支和多分支
awk -F: '{if($3<10){print $0}}' passwd                
#只要第三列小于10,就打印awk -F: '{if($3<10){print $3} else{print $1}}' passwd  
#第三列小于10,就打印第三列,否则就打印第一列

awk -F: ‘{if($3<10){print $0}}’ passwd
在这里插入图片描述

6.BEGIN END 流程

awk还支持for循环、while循环、函数、数组等awk 'BEGIN{ commands } pattern{ commands } END{ commands }'第一步:运行BEGIN{ commands }语句块中的语句。第二步:从文件或标准输入(stdin)读取一行。然后运行pattern{ commands }语句块,
它逐行扫描文件,从第一行到最后一行反复这个过程。直到文件所有被读取完成。第三步:当读至输入流末尾时,运行END{ commands }语句块。BEGIN语句块在awk开始从输入流中读取行之前被运行,这是一个可选的语句块,
比如变量初始化、打印输出表格的表头等语句通常能够写在BEGIN语句块中。END语句块在awk从输入流中读取全然部的行之后即被运行。比方打印全部行的分析结果
这类信息汇总都是在END语句块中完毕,它也是一个可选语句块。pattern语句块中的通用命令是最重要的部分,它也是可选的。假设没有提供pattern语句块,
则默认运行{ print },即打印每个读取到的行。awk读取的每一行都会运行该语句块。
这三个部分缺少任何一部分都可以
awk 'BEGIN{x=0};/\/bin\/bash$/ {x++;print x,$0};END {print x}' passwd            
#设一个变量x,搜索末尾包含/bin/bash,打印自增的x和每行内容,end打印最后的xawk -F: '!($3<200){print}' passwd                  #打印列第三不小于200awk 'BEGIN {FS=":"} ;{if($3>=1000){print}}' passwd       #先用:分割,然后打印第三列大于等于1000的行awk -F: ' {max=($3>=$4) ?$3:$4; {print max}} ' /etc/passwd   #三元运算符,比较第三列和第四列的大小sed -n '=;p' /etc/passwd                   # =用于打印当前的行号,先打印行号,再打印内容awk -F : '$7~"bash"{print $1,$3}' /etc/passwd    #搜索第七列包含像bash的内容,打印第一列和第三列awk -F: '($1~"root") && (NF==7) {print $1,$2,$NF } ' passwd    #搜索第一列像root且列数为7的行,打印第一二列和最后一列awk -F : '($7!="/bin/bash")&&($7!="/sbin/nologin"){print} ' /etc/passwd    #搜索第七列不包含/bin/bash和不包含/sbin/login的列awk -F: '($NF !="/bin/bash")&&($NF !="/sbin/nologin" ) {print NR, $0}' passwd    #搜索最后一列不等于/bin/bash和/sbin/nologin的行echo $PATH | awk 'BEGIN{RS=":"};{print NR,$0};END {print NR}'     
#将PATH传进awk中,以:开始为换行,打印每一行的行号和内容,最后打印最后一行行号free -m |awk '/Mem:/ {print int($3/($3+$4)*100)"%"}'   #搜索包含Mem:的行,运算当前内存使用百分比top -b -n 1 | grep Cpu | awk -F ',' '{print $4}'| awk '{print$1}'  
#top -b -n 1表示静态快照一次传给后面的管道,过滤出Cpu部分,以,分割,打印cpu的空闲率awk 'BEGIN { "hostname" | getline ; {print $0}}'   #getline获取hostname的数据,然后打印

awk ‘BEGIN{x=0};//bin/bash$/ {x++;print x,$0};END {print x}’ passwd
在这里插入图片描述

awk -F: ‘!($3<200){print}’ passwd
在这里插入图片描述

awk ‘BEGIN {FS=“:”} ;{if($3>=1000){print}}’ passwd
在这里插入图片描述

awk -F":" ’ {max=($3>=$4) ?$3:$4; {print max}} ’ /etc/passwd
在这里插入图片描述

sed -n ‘=;p’ passwd
在这里插入图片描述

awk -F: ‘$7~“bash”{print $1,$3}’ passwd
在这里插入图片描述

awk -F":" ‘($1~“root”)&&(NF==7){print $1, 2. 2. 2.NF}’ passwd
在这里插入图片描述

awk -F : '($7!=“/bin/bash”)&&($7!=“/sbin/nologin”){print} ’ /etc/passwd
在这里插入图片描述

awk -F: '($NF !="/bin/bash")&&($NF !="/sbin/nologin" ) {print NR, $0}' passwd

在这里插入图片描述

echo $PATH | awk ‘BEGIN{RS=“:”};{print NR,$0};END {print NR}’
在这里插入图片描述

*free -m |awk '/Mem:/ {print int($3/($3+$4)100)“%”}’
在这里插入图片描述

awk ‘BEGIN { “hostname” | getline ; {print $0}}’
在这里插入图片描述

7.AWK 数组

awk 'BEGIN{a[0]=10;a[1]=20;print a[1]}'       #打印数组下标1的内容
awk 'BEGIN{a["abc"]="aabbcc";a["xyz"]="xxyyzz";print a["xyz"]}'

awk ‘BEGIN{a[0]=10;a[1]=20;print a[1]}’
在这里插入图片描述

awk ‘BEGIN{a[“abc”]=“aabbcc”;a[“xyz”]=“xxyyzz”;print a[“xyz”]}’
在这里插入图片描述

8.awk 循环

awk 'BEGIN{a[0]=10;a[1]=20;a[2]=30;for(i in a){print a[i]}}'        #循环打印数组a,在awk中i不需要定义,会自动迭代awk '{ip[$1]++;} END{for(i in ip){print ip[i],i}}' /var/log/httpd/access_log | sort -
#统计日志文件中每个 IP 地址的出现次数,ip[$1]++ 表示如果 ip 数组中已经存在键 $1(即该 IP 地址),则对应的值增加 1awk '{a[$1] += 1;} END {for (i in a) printf("%d %s\n", a[i],i);}'
#统计文本文件中每一行第一列数据的出现次数("%d %s\n" 是一个格式化字符串,这个字符串定义了如何打印数组中的元素和它们的索引)awk '/Failed password/ {print $0} ' /var/log/secure    #搜索包含Failed password的行awk '/Failed/{ip[$11]++}END{for(i in ip){print i" "ip[i]}}'/var/log/secure    
#ip[$11]++每出现一次1行的元素就+1,统计出现次数,for 循环的变量 i 用来表示当前遍历到的键
(awk不需要定义循环次数,它内部自己就有循环)

awk ‘BEGIN{a[0]=10;a[1]=20;a[2]=30;for(i in a){printi a[i]}}’
在这里插入图片描述

awk '/Failed password/ {print $0} ’ /var/log/secure
在这里插入图片描述

awk ‘/Failed/{ip[$11]++}END{for(i in ip){print i","ip[i]}}’/var/log/secure
在这里插入图片描述

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

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

相关文章

Mojo模型的端到端加密:数据安全的终极防线

Mojo模型的端到端加密&#xff1a;数据安全的终极防线 在数字化时代&#xff0c;数据安全已成为企业和个人最为关注的问题之一。Mojo模型&#xff0c;作为一个先进的数据处理框架&#xff0c;其端到端加密&#xff08;E2EE&#xff09;功能为数据传输提供了坚不可摧的安全保障…

【C++11】C++11新纪元:深入探索右值引用与移动语义

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;位图与布隆过滤器 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀C11 &#x1f4d2;1. C11简介…

【Qt】修改窗口的标题和图标

以下操作仅对顶层 widget(独⽴窗口),有效。 修改窗口的标题 一.windowTitle属性 1.概念 是一种在用户界面中显示窗口的标题的属性。它可以用来设置窗口的标题栏文本。 2.API API说明windowTitle()获取到控件的窗⼝标题.setWindowTitle(const QString& title)设置控件的…

10 BERT

目录 1 综述 1.1 BERT的核心思想 1.2 BERT的关键技术&#xff1a;预训练阶段 1.3 微调阶段 2 BERT的架构 2.1 输入处理 3. 特征选择/学习模块 BERT 的自注意力过程 4. 预训练任务&#xff1a;同时进行 4.1 Next Sentence Prediction (NSP) 4.2 Masked Language Model…

基于微信小程序+SpringBoot+Vue的网络安全科普系统(带1w+文档)

基于微信小程序SpringBootVue的网络安全科普系统(带1w文档) 基于微信小程序SpringBootVue的网络安全科普系统(带1w文档) 优质的网络安全科普系统不仅可以单纯的满足工作人员管理的日常工作需求&#xff0c;还可以满足用户的需求。可以降低工作人员的工作压力&#xff0c;提高效…

rust 初探 -- 常用的集合

rust 初探 – 常用的集合 Vector 存储在堆内存上的数据&#xff0c;运行时可以动态变大或者变小。 Vec 特性&#xff1a; 由标准库提供&#xff0c;可以存储多个相同类型的值&#xff0c;并且值在内存中连续存放 Vector 的创建 fn main() {// Vec::new()let v: Vec<i32…

Mojo模型的自动调参:深度学习优化的新境界

Mojo模型的自动调参&#xff1a;深度学习优化的新境界 深度学习模型的参数调优是提高模型性能的关键步骤之一&#xff0c;但同时也是一个耗时且复杂的过程。Mojo模型作为一个先进的深度学习框架&#xff0c;其设计理念包含了自动化调参的概念&#xff0c;以简化模型训练流程并…

2024.7.29 作业

1> 写一个日志文件&#xff0c;将程序启动后&#xff0c;每一秒的时间写入到文件中 #include <myhead.h> int main(int argc,const char *argv[]) {FILE *fp NULL;if((fpfopen("./log.txt","r"))NULL) {perror("open error1");return…

解决 Git 访问 GitHub 时的 SSL 错误

引言 在使用 Git 进行版本控制时&#xff0c;我们可能会遇到各种网络相关的错误。其中一种常见的错误是 SSL 连接问题&#xff0c;这会导致 Git 无法访问远程仓库。本文将介绍一个具体的错误 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0&#xff0c;以及如何通过禁用 SSL 证…

Python数值计算(1)

准备总结一下通过Python进行数值计算的环境&#xff0c;先说一下数值计算的基本语法和库。 1.基本运算 Python中提供基本运算符&#xff0c;常见的加减乘除&#xff0c;唯一需要注意的是除法&#xff0c;整数除法和浮点数除法不一样。 一般除法/&#xff0c;无论参与运算的数…

【嵌入式英语教程--3】C语言中的基本数据类型

C语言中的基本数据类型 英文原文 In the C programming language, basic data types form the building blocks of any program. These include int, float, char, and bool. The int type is used for integer values, float for floating-point numbers, char for single c…

相机拍摄如何正确曝光

不同场景下的曝光思路 数码时代&#xff0c;我们并不需要准确曝光&#xff0c;我们只需要用单张或者多张照片&#xff0c;记录下场景的全部亮度信息直方图可以辅助我们确认&#xff0c;是否完整记录下了场景的亮度信息正常光比环境&#xff0c;提倡“向右曝光”。大光比环境&a…

通信系统的均衡技术

1、摘要 在通信系统中&#xff0c;信号从发送端发出&#xff0c;经过信道&#xff0c;到达接收端&#xff0c;而在传输的过程中&#xff0c;信号会发生失真&#xff0c;产生失真的原因有很多&#xff0c;包括阻抗不匹配&#xff0c;干扰等。为了优化信号质量&#xff0c;需要进…

【PyTorch笔记】训练时显存一直增加到 out-of-memory?真相了!

最近用 Pytorch 训模型的过程中&#xff0c;发现总是训练几轮后&#xff0c;出现显存爆炸 out-of-memory 的问题&#xff0c;询问了 ChatGPT、查找了各种文档。。。 在此记录这次 debug 之旅&#xff0c;希望对有类似问题的小伙伴有一点点帮助。 问题描述&#xff1a; 训练过…

mysql的唯一索引和普通索引有什么区别

在MySQL中&#xff0c;唯一索引&#xff08;UNIQUE Index&#xff09;和普通索引&#xff08;普通索引&#xff0c;也称为非唯一索引&#xff09;有一些关键的区别。以下是它们的比较以及性能分析&#xff1a; 唯一索引与普通索引的区别 唯一性&#xff1a; 唯一索引&#xff…

也来聊一聊反复开关空调是否更费电

文章目录 为了制造噱头而刻意开展的毫无实际价值的实验空调制冷的基本原理空调主要耗电部件分析空调主要耗电阶段分析启动阶段&#xff1a;瞬时功率较高&#xff0c;但持续时间较短制冷运行阶段&#xff1a;压缩机持续运行&#xff0c;耗电量最大温度达到设定值后的阶段&#x…

深入探索非线性数据结构:树与图的世界

在数据结构的广阔天地中&#xff0c;非线性结构以其独特的逻辑关系和广泛的应用场景&#xff0c;成为计算机科学领域的重要组成部分。其中&#xff0c;树和图作为两种典型的非线性数据结构&#xff0c;不仅深刻影响了算法的设计与分析&#xff0c;也广泛应用于各种实际问题的解…

基于tkinter的学生信息管理系统之登录界面和主界面菜单设计

目录 一、tkinter的介绍 二、登陆界面的设计 1、登陆界面完整代码 2、部分代码讲解 3、登录的数据模型设计 4、效果展示 三、学生主界面菜单设计 1、学生主界面菜单设计完整代码 2、 部分代码讲解 3、效果展示 四、数据库的模型设计 欢迎大家进来学习和支持&#xff01…

灯具外贸公司用什么企业邮箱好

灯具外贸公司面对海外市场的推广、产品销售、客户沟通、市场信息收集等多重需求&#xff0c;选择一个合适的企业邮箱显得尤为重要。本文将介绍灯具外贸公司为什么应选择Zoho Mail企业邮箱&#xff0c;并详细探讨其优势和功能。 一、公司背景 广东省深圳市光明新区&#xff0c…