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

awk命令编辑

awk工作原理

逐行读取文本,默认以空格或tab键分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。

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

命令格式:

awk 选项 '模式或条件 {操作}'   文件1  文件2 ...

awk  -f 脚本文件 文件1  文件2

awk常见的内建变量(可直接用)如下所示:

FS

列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与“-F”作用相同
NF当前处理的行的字段个数
NR当前处理的行的行号(序数)
$0当前处理的行的整行内容
$n当前处理行的第n个字段(第n列)
FILENAME被处理的文件名
RS行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是‘\n’

 按行输出文本

[root@cx ~]# awk '{print}' test 
one
two
three
four
five
six
seven
night
nine
ten
eleven
twelve
[root@cx ~]# awk 'NR==1,NR==3 {print}' test 输出第一行到第三行的内容
one
two
three
[root@cx ~]# awk '(NR>=1)&&(NR<=3) {print}' test   
one
two
three
[root@cx ~]# awk 'NR==1||NR==3 {print}' test 
one
three        输出第一行和第三行的行内容
[root@cx ~]# awk '(NR%2)==0{print NR,$0}' test 
2 two
4 four
6 six
8 night
10 ten
12 twelve      输出偶数行的行号和内容
[root@cx ~]# awk '(NR%2)==1{print NR,$0}' test 
1 one
3 three
5 five
7 seven
9 nine
11 eleven      输出奇数行的行号和内容
[root@cx ~]# awk '/^root/ {print $0}' passwd  以/root/开头的行内容
root:x:0:0:root:/root:/bin/bash
[root@cx ~]# awk '/bash$/ {print $0}' passwd  以/bash/结尾的行内容
root:x:0:0:root:/root:/bin/bash
cx:x:1000:1000:cx:/home/cx:/bin/bash
[root@cx ~]# awk '/\/bin\/bash$/ {print $0}' passwd 以/bin/bash/结尾的行内容
root:x:0:0:root:/root:/bin/bash
cx:x:1000:1000:cx:/home/cx:/bin/bash
[root@cx ~]# awk -F: '/^root/ {print $1}' passwd   输出以/root/开头的行的第1个字段
root
[root@cx ~]# awk -F: '/^root/ {print $3}' passwd   输出以/root/开头的行的第3个字段
0
[root@cx ~]# awk -F: '/^root/ {print $1,$3}' passwd 输出以/root/开头的行的第1和第3个字段
root 0
[root@cx ~]# awk -F: '/^root/ {print $1,$3,$NF}' passwd 输出以/root/开头的行的第1第3和最后一个字段
root 0 /bin/bash 
[root@cx ~]# awk -F: '/^root/ {print $1","$3","$NF}' passwd 用逗号分隔字段
root,0,/bin/bash
[root@cx ~]# grep -c "nologin$" passwd  过滤出以nologin结尾的行数
36
[root@cx ~]# awk '/nologin$/ {print $0}' passwd | wc -l 统计行数
36
[root@cx ~]# awk 'BEGIN {x=0}; /nologin$/ {x++}; END{print x}' passwd 
36 赋值一个变量0,每出现一个nologin结尾的行数自加1,最后打印输出x的值就是出现的行数
[root@cx ~]# awk 'BEGIN {x=0}; /nologin$/ {x++;print x,$0}; END{print x}' passwd 
1 bin:x:1:1:bin:/bin:/sbin/nologinBEGIN模式表示,在处理指定的文本之前,需要先执行BEGIN模式中指定的动作;
awk再处理指定的文本,之后再执行END模式中指定的动作,
END{}语句块中,往往会放入打印结果等语句

按字段输出文本

[root@cx ~]# awk -F: '$3<5 {print $0}' passwd  以:为分隔取第三个字段小于5的行打印行内容
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
ftp:123456
root:123456
[root@cx ~]# awk -F: '!($3>5) {print $0}' 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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
ftp:123456
root:123456
取反 打印除了第三个字段大于5的行内容,即打印第三个字段小于5的行
[root@cx ~]# awk 'BEGIN {FS=":"};{if($3<=5) print $0}' 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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
ftp:123456
root:123456先处理完BEGIN的内容,再打印文本里面的内容
[root@cx ~]# awk -F: '{max=($3>=$4)?$3:$4;{print$1, max}}' passwd 
root 0
bin 1
daemon 2
adm 4
lp 7
sync 5
shutdown 6
halt 7
mail 12
operator 11
games 100
ftp 50
nobody 99
systemd-network 192
#($3>$4)?$3:$4;三元运算符,如果第3个字段的值大于等于第4个字段的值,则把第3个字段的值赋给max,否则第4个字段的值赋给max
[root@cx ~]# awk '{print}' test 
one
two
three
four
five
six
seven
night
nine
ten
eleven
twelve
[root@cx ~]# awk '$1~"o" {print}' test 
one
two
four
输出第1个字段中包含“o”的行的第1个字段
[root@cx ~]# awk -F: '$1~"root" {print $0}' passwd 
root:x:0:0:root:/root:/bin/bash
root:123456
[root@cx ~]# awk -F: '($1~"root")&&(NF==7) {print $0}' passwd 
root:x:0:0:root:/root:/bin/bash
[root@cx ~]# awk -F: '($1~"root")&&(NF==7) {print $1,$2}' passwd 
root x
#输出第1个字段中包含root且有7个字段的行的第1、2个字段[root@cx ~]# awk -F: '!($1~"root")&&($NF=="/bin/bash") {print $0}' passwd 
cx:x:1000:1000:cx:/home/cx:/bin/bash
#输出第1个字段中不包含root且最后一个个字段是/bin/bash的行
[root@cx ~]# awk -F: '($1~"root")&&($NF!="/bin/bash") {print $0}' passwd 
root:123456
#输出第1个字段中包含root且最后一个字段不是/bin/bash的行
!表示取反

 通过管道、双引号调用 Shell 命令

以:分隔PATH变量的行数

[root@cx ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@cx ~]# echo $PATH | awk 'BEGIN {RS=":"} {print NR,$0}'
1 /usr/local/sbin
2 /usr/local/bin
3 /usr/sbin
4 /usr/bin
5 /root/bin设置行分隔符RS为冒号,打印输出

 内存使用百分比

[root@cx ~]# free -mtotal        used        free      shared  buff/cache   available
Mem:           1963         708         195           4        1059        1046
Swap:          4095           8        4087
[root@cx ~]# free -m | awk '/Mem/ {print $3}'
708
[root@cx ~]# free -m | awk '/Mem/ {print $3/$2}'
0.360672
[root@cx ~]# free -m | awk '/Mem/ {print $3/$2"%"}'
0.360672%
[root@cx ~]# free -m | awk '/Mem/ {print $3/$2 * 100}'
36.0672
[root@cx ~]# free -m | awk '/Mem/ {print $3/$2 * 100"%"}'
36.0672%
[root@cx ~]# free -m | awk '/Mem/ {print ($2-$3)/$2 * 100"%"}'
63.9328%#查看当前内存使用百分比

进程查看 

 

 cpu空闲率

[root@cx ~]# top -b -n1 | awk -F, '/%Cpu/ {print $4}' | awk '{print $1}'
93.8
[root@cx ~]# top -b -n1 | awk -F, '/%Cpu/ {print $4}' | awk '{print 100-$1}'
6.2
[root@cx ~]# top -b -n1 | awk -F, '/%Cpu/ {print $4}' | awk '{print 100-$1"%"}'
6.2%#查看当前CPU空闲率,(-b -n 1 表示只需要1次的输出结果)

 挂载使用率

 date作用

[root@cx ~]# date
2023年 05月 15日 星期一 15:26:34 CST
[root@cx ~]# date +%Y%m%d
20230515
[root@cx ~]# date +%Y-%m-%d
2023-05-15
[root@cx ~]# date +%F
2023-05-15
[root@cx ~]# date +%D
05/15/23
[root@cx ~]# date +"%Y%m%d %H:%M:%S"
20230515 15:29:36
[root@cx ~]# date +"%Y%m01"
20230501
[root@cx ~]# date +"%Y%m%d"
20230515
[root@cx ~]# date -d "1 month" +"%Y%m%d"
20230615
[root@cx ~]# date -d "-1 month" +"%Y%m%d"
20230415
[root@cx ~]# date -d "-1 month" +"%Y%m01"
20230401
[root@cx ~]# date -d "1 month ago" +"%Y%m01"
20230401
[root@cx ~]# date -d "-1 month ago" +"%Y%m01"
20230601
[root@cx ~]# date -d "yesterday" +"%Y%m%d"
20230514[root@cx ~]# date -d "$(date +%Y%m01) -1 day" +%Y%m%d
20230430  上个月最后一天
[root@cx ~]# date -d "$(date -d "1 month" +%Y%m01) -1 day" +%Y%m%d
20230531    这个月最后一天

显示系统上次重启时间

date -d      #显示字符串所指的日期与时间。字符串前后必须加上双引号

date +"%Y-%m-%d"      #注意 :+ 和格式之间没有空格

常用格式:

%F:完整日期格式,等价于%Y-%m-%d

%Y:年份

%m:月份

%d:按月计的日期

%T:时间,等于%H:%M:%S

%H: 小时,24小时制(00~23)

%M:分钟

%S:秒

[root@cx ~]# date -d "$(cat /proc/uptime | awk -F. '{print $1}') second ago"
2023年 05月 15日 星期一 20:18:49 CST
[root@cx ~]# date -d "$(cat /proc/uptime | awk -F. '{print $1}') second ago" +"%Y%m%d %H:%M:%S"
20230515 20:18:49
[root@cx ~]# date -d "$( awk -F. '{print $1}' /proc/uptime) second ago" +"%Y%m%d %H:%M:%S"
20230515 20:18:49

getline的使用

当getline左右无重定向符“<”或“|”时,awk首先读取到了第一行,就是1,然后getline,就得到了1下面的行,就是2,因为getline之后,awk会改变对应的NF,NR,FNR和$0等内部变量,所以此时的$0的值就不再是1,而是2了,即隔行输出。然后将它打印出来。
当getline左右有重定向符“<”或“|”时,getline则作用于定向输入文件,由于该文件是刚打开,并没有被awk读入一行,只是getline读入,那么getline返回的是该文件的第一行,而不是隔行。

#当有重定向符号或 “|” 时,只会输出第1行
awk 'BEGIN {"cat a.txt" |getline; {print }}'
one#当有重定向符号或 “|” 时,输出奇数行
cat a.txt | awk '{print $0;getline}'
one
three
five
seven
nine
eleven
#输出偶数行
cat a.txt | awk '{getline;print $0}'
two
four
six
eight
ten
twelve
[root@cx ~]# w20:49:50 up 31 min,  4 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     :0       :0               20:19   ?xdm?  29.01s  0.19s /usr/libexec/gnome-session-binary --ses
root     pts/0    :0               20:20   29:32   0.05s  0.05s bash
root     pts/1    192.168.47.1     20:20    6.00s  0.10s  0.00s w
root     pts/2    192.168.47.1     20:35    8:38   0.04s  0.04s -bash
[root@cx ~]# awk 'BEGIN{n=0;while("w" | getline) n++; {print n-2}}'
4

FNR:awk当前读取的记录数,其变量值小于等于NR(比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。
NR==FNR:用于在读取两个或两个以上的文件时,判断是不是在读取第一个文件

 

awk数组

#BEGIN中的命令只执行一次
awk 'BEGIN{a[0]=1;a[1]=2;a[2]=3;print a[2]}'
3
#awk数组的下标除了数字,还可以使用字符串,字符串需要使用双引号
awk 'BEGIN{a["q"]="aaa";a["m"]="bbb";a["y"]="ccc";print a["q"]}'
aaaawk 'BEGIN{a["q"]=1;a["m"]=2;a["y"]=3;for(i in a){print i,a[i]}}'
y 3
m 2
q 1

过滤文本中重复行数

cat b.txt
aaa
bbb
ccc
aaa
aaa
aaa
bbb
bbb
ccc
#将文本的内容作为数组下标,a[$1]++表示出现相同的行,就自加1
awk '{a[$1]++}END{for (i in a){print i,a[i]}}' b.txt
aaa 4
ccc 2
bbb 3

过滤访问本机密码输入失败的命令

#过滤密码输出错误的IP地址及输入次数
[root@cx log]# awk '/Failed password/{ip[$11]++}END{for(i in ip){print i,ip[i]}}' /var/log/secure
192.168.47.10 2
192.168.47.100 3#过滤输入次数大于4次的IP地址
[root@cx log]# awk '/Failed password/{ip[$11]++}END{for(i in ip){print i,ip[i]}}' /var/log/secure | awk '$2>2{print $1}'
192.168.47.100

相关文章:

awk命令编辑

awk工作原理 逐行读取文本&#xff0c;默认以空格或tab键分隔符进行分隔&#xff0c;将分隔所得的各个字段保存到内建变量中&#xff0c;并按模式或者条件执行编辑命令。 sed命令常用于一整行的处理&#xff0c;而awk比较倾向于将一行分成多个“字段”然后再进行处理。awk信息…...

Pinia和Vuex的区别

Pinia和Vuex都是Vue.js状态管理库 Pinia是一个轻量级的状态管理库&#xff0c;它专注于提供一个简单的API来管理应用程序的状态。 相比之下&#xff0c;Vuex是一个更完整的状态管理库&#xff0c;它提供了更多的功能&#xff0c;比如模块化、插件和严格模式等。 Pinia是基于V…...

《C++高并发服务器笔记——第四章Linux网络编程》

计算机网络等相关知识可以去小林coding进行巩固&#xff08;点击前往&#xff09; 《C高并发服务器笔记——第四章》 4.1、网络结构模式1.C/S结构①C/S结构简介②C/S结构优点③C/S结构缺点 2.B/S结构①B/S结构简介②B/S结构优点③B/S结构缺点 4.2和4.3、MAC地址、IP地址、端口…...

NFS服务器搭建(案例)

目录标题 第一个问题1.安装软件包2.进入配置文件进行定义&#xff0c;并创建对应的资源文件3.客户端进行挂载&#xff0c;并查看挂载信息&#xff0c;修改挂载权限4.客户端查看挂载的信息 第二个问题1.服务端配置文件进行定义&#xff0c;并创建对应资源文件2.客户端进行挂载3.…...

ubuntu 22.04 安装 Docker Desktop 及docker介绍

目录 一、Docker Desktop 安装 1、我们先去官网下载安装包 2、Install Docker Desktop on Ubuntu 3、Launch Docker Desktop 二、Docker 介绍 什么是docker 如何使用docker docker是如何工作的 docker build docker run docker pull 一、Docker Desktop 安装 1、我们先…...

微前端中的应用隔离是什么,一般是怎么实现的?

微前端中的应用隔离是什么&#xff0c;一般是怎么实现的? 前言一、iframe 隔离二、Web Components三、JavaScript 沙箱隔离四、Shadow DOM 隔离总结 前言 微前端中的应用隔离是指将不同的微前端应用程序隔离开来&#xff0c;以确保它们之间不会相互影响或干扰。这种隔离可以通…...

【python pandas】合并文件并剔除重复数据

1.背景 工作中需要处理多个文件&#xff0c;每个文件里面有重复的数据&#xff0c;剔除重复数据&#xff0c;保留最新的数据 2.代码&#xff1a; import pandas as pd import osdl [] #person_list是文件路径 for i in range(person_list_len):#把文件df全部集合进列表dldl.a…...

Spellman高压电源X射线发生器维修XRB160PN480X4593

spellman高压发生器维修VMX40P5X4629&#xff1b;Spellman X射线发生器维修X4593系列 X射线源维修。 Spellman所拥有的变频器架构可以使高压电源获得高利用率的效率和功率密度。固体密封的高压模块进一步减少了尺寸和重量。 基于表面贴装控制电路的数字信号处理器提供通讯接口…...

msvcr120.dll丢失怎样修复?msvcr120.dll丢失修复的四个方法

打开软件跟游戏提示msvcr120.dll丢失&#xff0c;无法执行此代码怎么办&#xff1f;刚刚遇到这个问题&#xff0c;我都无从下手。家人们&#xff0c;你是不是也被这个问题也困扰过。msvcr120.dll是什么文件呢&#xff1f;经过我一个下午的时间研究&#xff0c;终于搞清楚了&…...

马哈鱼SQLFLow数据流生成介绍

马哈鱼数据血缘分析器是当前最流行的数据血缘关系(data lineage)管理工具之一&#xff0c;它是一种通过分析SQL脚本来自动发现数据流向的工具。它通过生成一个简洁的图表来显示数据仓库中表/视图和列之间的数据流。支持超过20种流行的数据库&#xff0c;包括 bigquery, couchba…...

使用 MVC 模式,实现简单登录功能 (Kotlin)

先放效果图&#xff1a; 第一张是登录页面效果图。用户输入登录名和密码&#xff0c;经过后台的非空验证和固定值验证&#xff0c;跳转到首页 第二张是首页效果图。用户点击 “update” 显示用户名和密码 这里的用户名和密码是后台设置的固定值&#xff0c;整体的登录逻辑特别…...

ASEMI代理LT8471IFE#PBF原装ADI车规级LT8471IFE#PBF

编辑&#xff1a;ll ASEMI代理LT8471IFE#PBF原装ADI车规级LT8471IFE#PBF 型号&#xff1a;LT8471IFE#PBF 品牌&#xff1a;ADI/亚德诺 封装&#xff1a;TSSOP-20 批号&#xff1a;2023 引脚数量&#xff1a;20 工作温度&#xff1a;-40C~125C 安装类型&#xff1a;表面…...

8. 100ASK_V853-PRO开发板支持MPP媒体处理平台

0.前言 ​ MPP 系统控制模块&#xff0c;根据芯片特性&#xff0c;完成硬件各个部件的复位、基本初始化工作&#xff0c;同时负责完成 MPP&#xff08;Media Process Platform 媒体处理平台&#xff09;系统各个业务模块的初始化、去初始化以及管理 MPP 系统各个业务模块的工作…...

CLMP证书:让你在职场中脱颖而出的秘密武器!

CLMP证书是一种精益管理专业证书&#xff0c;是针对精益管理领域的专业人士和学生的培训项目&#xff0c;旨在提高他们在精益管理方面的技能和知识。那么&#xff0c;CLMP证书的含金量高吗&#xff1f;接下来我们来探讨一下。 CLMP证书的优势体现 首先&#xff0c;CLMP证书的…...

【从零开始】Docker Desktop:听说你小子要玩我

前言 &#x1f34a;缘由 捡起遗忘的Docker知识 由于本狗近期项目紧任务重&#xff0c;高强度的搬砖导致摸鱼时间下降。在上线项目时&#xff0c;看到运维大神一系列骚操作&#xff0c;dockerk8s的知识如过眼云烟&#xff0c;忘得干净的很。所以想重新恶补一下docker知识&…...

制造业为什么要数字化?

制造业数字化&#xff0c;主要包含以下一些因素&#xff0c;有优势也有缺点&#xff1a; 制造业数字化的优势&#xff1a; 提高效率&#xff1a;数字化允许各种制造过程自动化&#xff0c;可以提高效率并降低成本。可以缩短生产时间、减少浪费并提高生产率。 增强质量控制&am…...

NPC 也有了生命?当 ChatGPT 注入游戏你能想象吗

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; 目录 引言&#xff1a;西部世界元宇宙&#xff0c;还记得吗ChatGPT 的世界&#xff1f; 下图就是一个 ChatGPT 小镇&#xff1a; 引言&#xff1a;西部世界 《西部世界》以一个虚构的游戏般的“西部世界”为背景…...

Shell编程入门讲解

一.简介 Shell 是一个用 C 语言编写的命令行解释器&#xff0c;它是用户使用 Linux 的桥梁&#xff0c;它接受应用程序/用户命令&#xff0c;然后调用操作系统内核。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言。Shell 是指一种应用程序&#xff0c;这个应用程序提…...

C++ 变量作用域

C 变量作用域 作用域是程序的一个区域&#xff0c;一般来说有三个地方可以定义变量&#xff1a; 在函数或一个代码块内部声明的变量&#xff0c;称为局部变量。 在函数参数的定义中声明的变量&#xff0c;称为形式参数。 在所有函数外部声明的变量&#xff0c;称为全局变量。…...

【状态未成功】CONFIG_CFI_CLANG失败过程记录

实现并没有成功&#xff0c;只是记录过程&#xff0c;使用4.9内核尝试开启过程 关于 控制流完整性 (CFI) 是一种安全机制&#xff0c;它不允许更改已编译二进制文件的原始控制流图&#xff0c;因而执行此类攻击变得异常困难。 在 Android 9 中&#xff0c;我们在更多组件以及内…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...