AWK 入门教程:强大的文本处理工具
AWK 是一种强大的文本处理工具,广泛用于 Linux/Unix 系统中对文本文件或数据流进行操作。它能够基于条件筛选、统计字段、重新排列数据等。主要特点包括:
2. AWK 的基本语法
2.1 AWK 程序的结构
AWK 程序的结构:
awk 'pattern { action }' file
2.2 常用内置变量
变量 | 含义 |
NR | 当前处理的行号 |
FNR | 当前文件的行号(处理多个文件时的相对行号) |
NF | 当前行的字段数(列数) |
2 | 第 1 列、第 2 列的值 |
$NF | 当前行的最后一列值 |
FS | 输入字段分隔符(默认为空格) |
OFS | 输出字段分隔符(默认空格) |
RS | 输入记录分隔符(默认为换行符) |
ORS | 输出记录分隔符(默认为换行符) |
ARGIND | 当前处理的文件在命令行参数中的索引 |
ARGC | 命令行参数的数量 |
ENVIRON | 存储当前环境变量的关联数组 |
FILENAME | 当前正在处理的文件名 |
SUBSEP | 数组下标分隔符(默认为 \034 ) |
RSTART | match 函数匹配字符串的起始位置 |
RLENGTH | match 函数匹配字符串的长度 |
以下是 常用内置变量 的补充说明,以 Markdown 格式输出:
变量说明:
2.3 运行 AWK 程序
AWK 程序可以通过以下方式运行:
注意事项:
• 未指定文件时,AWK 从标准输入读取数据;
• 可同时处理多个文件;
2.4 基本输出
2.5 高级输出
printf 格式化输出
printf
可以格式化输出内容,例如:
awk '{ printf "Name: %s, Age: %d\n", $1, $2 }' file.txt
排序输出
结合 sort
命令对输出进行排序:
awk '{ print $1 }' file.txt | sort
2.6 选择/过滤行
按某列的值
按某几列值的计算结果
按字符串匹配
不同方式的组合
BEGIN 和 END
2.7 计算
统计数量:工时超过 15 小时的员工人数
awk '$3 > 15 { count++ } END { print count }' file.txt
求和、求平均:平均工资
awk '{ sum += $2 } END { print "Average:", sum/NR }' file.txt
处理文本:打印时薪最高的员工信息
awk '$4 > max { max = $4; line = $0 } END { print line }' file.txt
字符串拼接(concatenation):在一行内打印所有员工名
awk '{ names = names $1 " " } END { print names }' file.txt
打印最后一行
awk '{ last = $0 } END { print last }' file.txt
内置函数
2.8 控制流
If-Else
awk '{ if ($1 > 50) print "High"; else print "Low" }' file.txt
While
awk '{ i = 1; while (i <= NF) { print $i; i++ } }' file.txt
For
awk '{ for (i = 1; i <= NF; i++) print $i }' file.txt
2.9 数组
统计每列的总和:
awk '{ for (i = 1; i <= NF; i++) sum[i] += $i } END { for (i in sum) print "Column", i, "Sum:", sum[i] }' file.txt
3. AWK 示例速查表
以下是常见 AWK 功能及其对应程序和类似命令:
编号 | 功能 | AWK 程序 | 类似命令 |
1 | 打印总行数 | END { print NR } | wc -l |
2 | 打印第 10 行 | NR == 10 { print } | sed -n '10p' |
3 | 打印最后一列 | { print $NF } | 无 |
4 | 打印最后一行的最后一列 | { f = $NF } END { print f } | tail -n1 |
5 | 打印有 4 列以上的行 | NF > 4 { print } | 无 |
6 | 打印最后一列的值大于 4 的行 | $NF > 4 { print } | 无 |
7 | 打印所有输入的总字段数 | { nf += NF } END { print nf } | 无 |
8 | 打印包含关键字的总行数 | /keyword/ { n++ } END { print n } | grep -c 'keyword' |
9 | 打印第 1 列的最大值及对应的行 | $1 > max { max = $1; line = $0 } END { print max, line } | 无 |
10 | 打印列数大于 1 的行 | NF > 1 { print } | 无 |
11 | 打印长度大于 80 的行 | length($0) > 80 { print } | 无 |
12 | 打印每行的列数和该行内容 | { print NF, $0 } | 无 |
13 | 打印第 2 列和第 1 列 | { print $2, $1 } | 无 |
14 | 交换第 1 列和第 2 列 | { t = $1; $1 = $2; $2 = t; print } | 无 |
15 | 第 1 列替换为行号 | { $1 = NR; print } | 无 |
16 | 删除第 2 列并打印 | { $2 = ""; print } | 无 |
17 | 倒序打印每行的字段 | { for (i=NF; i>0; i--) printf "%s ", $i; printf "\n" } | 无 |
18 | 计算每行的字段和 | { sum=0; for (i=1; i<=NF; i++) sum += $i; print sum } | 无 |
19 | 计算所有字段的总和 | { for (i=1; i<=NF; i++) sum += $i } END { print sum } | 无 |
20 | 将所有字段取绝对值并打印 | { for (i=1; i<=NF; i++) if ($i<0) $i = -$i; print } | 无 |
-
-
• 基于模式匹配: 根据条件筛选数据。
-
• 列操作能力: 简单高效地处理文本列数据。
-
• 轻量编程语言: 提供内置变量、循环、条件语句等编程功能。
-
相关资料
《AWK 编程语言》:
-
https://github.com/wuzhouhui/awk/blob/twoside/The_AWK_Programming_Language_zh_CN.pdf
-
• pattern: 指定操作的匹配规则,例如正则表达式、逻辑判断等。
-
• action: 指满足条件时要执行的操作,用
{}
包围,例如打印、统计、替换等。 -
• file: 要处理的文本文件名称。
-
NR 和 FNR 的区别:
-
•
NR
:累计行号,处理多个文件时行号会累加。 -
•
FNR
:当前文件的行号,处理多个文件时每个文件的行号从 1 开始重新计数。
-
-
FS 和 OFS 的作用:
-
•
FS
:指定输入字段的分隔符,默认是空格。 -
•
OFS
:指定输出字段的分隔符,默认是空格。
-
-
RS 和 ORS 的作用:
-
•
RS
:指定输入记录的分隔符,默认是换行符。 -
•
ORS
:指定输出记录的分隔符,默认是换行符。
-
-
ENVIRON 的使用:
-
•
ENVIRON
是一个关联数组,用于访问环境变量。例如:awk 'BEGIN { print ENVIRON["HOME"] }'
-
-
RSTART 和 RLENGTH:
-
• 这两个变量与
match
函数配合使用,用于获取匹配字符串的起始位置和长度。例如:awk 'BEGIN { str = "hello world"; match(str, /world/); print RSTART, RLENGTH }'
-
-
SUBSEP:
-
• 用于多维数组的下标分隔符,默认是
\034
(非打印字符)。例如:awk 'BEGIN { arr["a", "b"] = 10; print arr["a", "b"] }'
-
-
ARGIND 和 ARGC:
-
•
ARGIND
:当前处理的文件在命令行参数中的索引(从 1 开始)。 -
•
ARGC
:命令行参数的数量。例如:awk 'BEGIN { print ARGIND, ARGC }' file1.txt file2.txt
-
-
FILENAME:
-
• 当前正在处理的文件名。例如:
awk '{ print FILENAME, $0 }' file1.txt file2.txt
-
-
2, ..., $NF:
-
•
$1
表示第 1 列,$2
表示第 2 列,依此类推。 -
•
$NF
表示当前行的最后一列。
-
-
NF:
-
• 当前行的字段数(列数)。例如:
awk '{ print NF }' file.txt
-
-
RS 和 ORS 的高级用法:
-
• 可以修改
RS
和ORS
来处理非标准格式的文件。例如,将RS
设置为空字符串,以处理多行记录:awk 'BEGIN { RS = "" } { print $0 }' file.txt
-
-
SUBSEP 的高级用法:
-
• 可以修改
SUBSEP
来定义多维数组的下标分隔符。例如:awk 'BEGIN { SUBSEP = ":"; arr["a", "b"] = 10; print arr["a", "b"] }'
-
-
RSTART 和 RLENGTH 的高级用法:
-
• 结合
match
函数,可以提取匹配的子字符串。例如:awk 'BEGIN { str = "hello world"; match(str, /world/); print substr(str, RSTART, RLENGTH) }'
-
-
ENVIRON 的高级用法:
-
• 可以遍历
ENVIRON
数组,打印所有环境变量。例如:awk 'BEGIN { for (key in ENVIRON) print key, ENVIRON[key] }'
-
-
FILENAME 的高级用法:
-
• 在处理多个文件时,可以根据文件名执行不同的操作。例如:
awk '{ if (FILENAME == "file1.txt") print "File1:", $0; else print "File2:", $0 }' file1.txt file2.txt
-
-
命令行直接运行:
awk 'pattern { action }' file
-
•
pattern
:匹配条件(可选)。 -
•
action
:满足条件时执行的操作。 -
•
file
:要处理的文件。
-
-
脚本文件运行:
awk -f script.awk file
示例:假设
script.awk
内容如下:{ print $1 }
运行命令:
awk -f script.awk file.txt
-
•
script.awk
:包含 AWK 程序的脚本文件。 -
•
file
:要处理的文件。
-
-
• 打印文件的所有内容:
awk '{ print $0 }' file.txt
-
• 打印文件的第 1 列和第 3 列:
awk '{ print $1, $3 }' file.txt
-
• 打印第 2 列大于 50 的行:
awk '$2 > 50 { print }' file.txt
-
• 打印第 1 列和第 2 列之和大于 100 的行:
awk '$1 + $2 > 100 { print }' file.txt
-
• 打印包含 "error" 的行:
awk '/error/ { print }' file.txt
-
• 打印第 2 列大于 50 且包含 "error" 的行:
awk '$2 > 50 && /error/ { print }' file.txt
-
•
BEGIN
块在处理输入前执行,END
块在处理输入后执行:awk 'BEGIN { print "Start" } { print } END { print "End" }' file.txt
-
• 统计行数、单词数、字符数:
awk '{ chars += length($0); words += NF } END { print "Lines:", NR, "Words:", words, "Chars:", chars }' file.txt
-
相关文章:
AWK 入门教程:强大的文本处理工具
AWK 是一种强大的文本处理工具,广泛用于 Linux/Unix 系统中对文本文件或数据流进行操作。它能够基于条件筛选、统计字段、重新排列数据等。主要特点包括: 2. AWK 的基本语法 2.1 AWK 程序的结构 AWK 程序的结构: awk pattern { action } file 2.2 常…...
【Linux】在VMWare中安装Ubuntu操作系统(2025最新_Ubuntu 24.04.2)#VMware安装Ubuntu实战分享#
今天田辛老师为大家带来一篇关于在VMWare虚拟机上安装Ubuntu系统的详细教程。无论是学习、开发还是测试,虚拟机都是一个非常实用的工具,它允许我们在同一台物理机上运行多个操作系统。Ubuntu作为一款开源、免费且用户友好的Linux发行版,深受广…...
基于yolov8+streamlit实现目标检测系统带漂亮登录界面
【项目介绍】 基于YOLOv8和Streamlit实现的目标检测系统,结合了YOLOv8先进的目标检测能力与Streamlit快速构建交互式Web应用的优势,为用户提供了一个功能强大且操作简便的目标检测平台。该系统不仅具备高精度的目标检测功能,还拥有一个漂亮且…...
安装 Powerlevel10k 及 Oh My Zsh 的使用
1. 简介 Powerlevel10k 是 Oh My Zsh 最流行的终端主题,它不仅美观,还提供 Git 状态显示、命令执行时间、网络状态、Python 虚拟环境指示等 实用功能。相比其他主题,Powerlevel10k 速度更快、可定制性更强。 本教程将详细介绍如何安装 Powe…...
虚拟机下ubuntu进不了图形界面
6.844618] piix4_smbus 0000:07.3: SMBus Host ContrFoller not enabled! 7.859836] sd 2:0:0:0:0: [sda] Assuming drive cache: wirite through /dev/sda1: clean, 200424/1966080 files, 4053235/7864064 blocks ubuntu启动时,卡在上面输出位置 当前遇到的原因…...
从 root 一滴水看 Spring Data JPA 的汪洋大海
🔥 从 root 一滴水看 Spring Data JPA 的汪洋大海 🌊 在 Spring Data JPA 的世界里,Specification 是个让人又爱又恨的家伙 💡。它能帮你动态构建查询,但那个神秘的 Root<T> root 却总让人摸不着头脑࿱…...
二进制安装指定版本的MariaDBv10.11.6
一、官网下载mariadb安装包 Download MariaDB Server - MariaDB.org 找到对应的版本 下载安装包后上传到服务器这里不再赘述。 二、安装二进制包 1、解压安装包 2、查看安装包内的安装提示文档根据提示文档进行安装 # 解压安装包 tar xf mariadb-10.11.6-linux-systemd-x8…...
日志Python安全之SSTI——Flask/Jinja2
ssti的概念和模板引擎介绍等基础知识前面已经学过了,接下来直接进入正题 先了解flask/jinja2: flask: 用python编写的一个框架,集成 Jinja2 模板引擎(用于动态生成 HTML 内容)。 Flask 的核心组件&…...
梯度下降法以及随机梯度下降法
梯度下降法就是在更新weight的时候,向函数值下降的最快方向进行更新,具体的原理我就不再写了,就是一个求偏导的过程,有高数基础的都能够很快的理解过程。我在我的github里面会一直更新自己学习pytorch的过程,地址为&am…...
从零基础到能独立设计单片机产品,一般需要经历哪些学习阶段?
相信很多人,内心都有“钢铁侠”的幻想,成为能写程序,能设计硬件,能设计结构,能焊接的全能型人才。 上次徐工问我,如果你财富自由了,想去做啥? 我说出来,可能大家都不信&a…...
ORACLE 19.8版本遭遇ORA-600 [kqrHashTableRemove: X lock].宕机的问题分析
客户反馈单机环境的一个数据库半夜突然宕机了,这是一个比较重要的系统;接到通知后分析对应日志,发现ALERT日志中有明显报错:ORA-600 [kqrHashTableRemove: X lock]. 600报错我简单的分为2类,一类不会导致宕机&#x…...
OpenCV实现图像分割与无缝合并
一、图像分割核心方法 1、阈值分割 #include <opencv2/opencv.hpp> using namespace cv; int main() {Mat img imread("input.jpg", IMREAD_GRAYSCALE);Mat binary;threshold(img, binary, 127, 255, THRESH_BINARY); // 固定阈值分割imwrite("binary.…...
《AI浪潮中的璀璨新星:Meta Llama、Ollama与DeepSeek的深度剖析》:此文为AI自动生成
《AI浪潮中的璀璨新星:Meta Llama、Ollama与DeepSeek的深度剖析》:此文为AI自动生成 引言:AI 大模型的群雄逐鹿时代 在科技飞速发展的当下,AI 大模型领域已成为全球瞩目的焦点,竞争激烈程度堪称白热化。从 OpenAI 推出…...
如何搭建个人静态住宅IP:从零开始
你好!今天我们将一起探索如何从头开始搭建个人静态住宅IP。无论您是为了远程办公、在线教育还是游戏加速,静态住宅IP都能带给您更稳定的网络体验。 一、准备阶段 1. 明确需求 首先,您需要清楚自己为什么需要静态住宅IP。可能是为了实现远程…...
机器人触觉的意义
机器人触觉的重要性 触觉在机器人领域至关重要,尤其是在自主操作、精细操控、人机交互等方面。虽然视觉和语音技术已高度发展,但机器人在现实世界中的操作仍然受限,因为: 视觉有局限性:仅凭视觉,机器人难…...
【赵渝强老师】达梦数据库的目录结构
达梦数据库安装成功后,通过使用Linux的tree命令可以非常方便地查看DM 8的目录结构。 tree -L 1 -d /home/dmdba/dmdbms#输出的信息如下: /home/dmdba/dmdbms ├── bin 存放DM数据库的可执行文件,例如disql命令等。 ├── bin2 ├── d…...
centos7使用gpu加速的MinerU
https://mineru.readthedocs.io/zh-cn/latest/user_guide/install/boost_with_cuda.html 由于官方只有ubantu的安装教程,并没有基于centos7的,故需要自己修改命令安装并使用。 在运行此 Docker 容器之前,您可以使用以下命令检查您的设备是否…...
反射、反射调用以及修改成员变量,成员方法,构造函数、反射的应用
DAY11.2 Java核心基础 反射(第二弹) 第一弹请访问链接: 反射(第一篇) getMethod(String name, Class… parameterTypes)getMethods()getDeclaredMethod(String name,Class… parameterTypes)getDeclaredMethods() …...
对Spring的每种事务传播级别的应用场景和失效场景
好的,下面针对Spring的每种事务传播级别,详细说明其应用场景和失效场景,帮助更好地理解它们的实际使用。 1. REQUIRED(默认) 应用场景: 大多数业务方法,尤其是需要事务支持的操作。例如&#x…...
DeepSeek linux服务器(CentOS)部署命令笔记
Linux(CentOS)FinalShellOllama远程访问,本地部署deepseek 自备CentOS服务器,并且已经使用FinalShell连接到服务器 一、准备工作 1.更新服务器 apt-get update-y 2.下载Ollama curl -fsSL https://ollama.com/install.sh | …...
阿里巴巴发布 R1-Omni:首个基于 RLVR 的全模态大语言模型,用于情感识别
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
OpenCV 拆分、合并图像通道方法及复现
视频讲解 OpenCV 拆分、合并图像通道方法及复现 环境准备:安装 OpenCV 库(pip install opencv-python) 内容: 1. 读取任意图片(支持 jpg/png 等格式) 2. 使用 split () 函数拆解成 3 个单色通道…...
Node 使用 SSE 结合redis 推送数据(echarts 图表实时更新)
1、实时通信有哪些实现方式? 特性轮询(Polling)WebSocketSSE (Server-Sent Events)通信方向单向(客户端 → 服务端)双向(客户端 ↔ 服务端)单向(服务端 → 客户端)连接方…...
提升 Instagram 账号安全性:防止数据泄露的步骤
提升 Instagram 账号安全性:防止数据泄露的步骤 在这个数字化时代,Instagram 不仅是我们分享生活点滴的平台,也是个人信息交换的场所。随之而来的,是数据泄露的风险。保护好自己的 Instagram 账号,防止个人信息外泄&a…...
实现“XXX一张图“进行环境设施设备可视化管理
实现“电网一张图”、“铁路一张图”、“水库一张图”、“森林一张图”等概念,本质上是将某一领域的空间数据、设施设备、运行状态等信息整合到一个统一的数字化平台上,实现全域可视化、智能化管理和协同运营。这种“一张图”模式依赖于地理信息系统(GIS)、物联网(IoT)、…...
RTDETR融合[CVPR2025]ARConv中的自适应矩阵卷积
RT-DETR使用教程: RT-DETR使用教程 RT-DETR改进汇总贴:RT-DETR更新汇总贴 《Adaptive Rectangular Convolution for Remote Sensing Pansharpening》 一、 模块介绍 论文链接:https://arxiv.org/pdf/2503.00467 代码链接:https:/…...
深度解读DeepSeek部署使用安全(48页PPT)(文末有下载方式)
深度解读DeepSeek:部署、使用与安全 详细资料请看本解读文章的最后内容。 引言 DeepSeek作为一款先进的人工智能模型,其部署、使用与安全性是用户最为关注的三大核心问题。本文将从本地化部署、使用方法与技巧、以及安全性三个方面,对Deep…...
微服务无状态服务设计
微服务无状态服务设计是构建高可用、高扩展性系统的核心方法。 一、核心设计原则 请求独立性 每个请求必须携带完整的上下文信息,服务不依赖本地存储的会话或用户数据。例如用户认证通过JWT传递所有必要信息,而非依赖服务端Session。 状态外置化 将会话…...
Android 高版本 DownloadManager 封装工具类,支持 APK 断点续传与自动安装
主要有以下优点 兼容高版本 Android:适配 Android 10 及以上版本的存储权限和安装权限。断点续传:支持从断点继续下载。下载进度监听:实时获取下载进度并回调。错误处理:处理下载失败、网络异常等情况。自动安装 APK:…...
Apache Hudi 性能测试报告
一、测试背景 数据湖作为一个集中化的数据存储仓库,支持结构化、半结构化以及非结构化等多种数据格式,数据来源包含数据库数据、增量数据、日志数据以及数仓上的存量数据等。数据湖能够将这些不同来源、不同格式的数据集中存储和管理在高性价比的分布式存储系统中,对外提供…...
Flask使用Blueprint注册管理路由
在 Flask 中,可以使用 蓝图(Blueprint) 来组织和注册路由,从而让代码更加模块化和易于维护。以下是完整的使用方法: 1. 创建 Flask 项目结构 建议的项目目录结构如下: my_flask_app/ │── app.py …...
LuaJIT 学习(3)—— ffi.* API 函数
文章目录 GlossaryDeclaring and Accessing External Symbolsffi.cdef(def)ffi.Cclib ffi.load(name [,global])例子:ffi.load 函数的使用 Creating cdata Objectscdata ffi.new(ct [,nelem] [,init...]) cdata ctype([nelem,] [init...])例子:匿名 C…...
[资源分享]-web3/区块链/学习路线/资料/找工作方式/水龙头
记录个人学习web3整理的资料 后续如果有 了解/入坑 打算, 提前收藏一下. 1. 学习路线 登链社区-学习路线图 2. 学习资料 国内成系统的资料比较少,我整理的网盘的,关注私信我,资料互相学习 前言 | 区块链技术指南 学习web3-僵尸小游戏 web3.js文档 ethers.js官方文档 Hardhat文…...
Django-ORM-prefetch_related
Django-ORM-prefetch_related 模型定义N1 查询问题示例 使用 prefetch_related 优化查询处理更复杂的查询示例:预取特定条件的书籍示例:预取多个关联字段 性能比较注意事项总结 通过 Author 和 Books 两个模型来理解 Django 的 prefetch_related 方法。 …...
MySQL 批量插入 vs 逐条插
MySQL 插入数据:批量插入 vs 逐条插入,哪个更快? 在 MySQL 中,插入数据有两种常见方式: 批量插入:一条 SQL 插入多条数据。逐条插入:每次插入一条数据。 这两种方式有什么区别?哪…...
Linux centos 7 grub引导故障恢复
CentOS 7误删GRUB2可以通过以下步骤恢复: 进入救援模式 1. 插入CentOS 7安装光盘,重启系统。在开机时按BIOS设置对应的按键(通常是F2等),将启动顺序调整为CD - ROM优先。 2. 系统从光盘启动后,选择“…...
要在Unreal Engine 5(UE5)中实现角色打击怪物并让怪物做出受击反应,
UE5系列文章目录 文章目录 UE5系列文章目录前言一、实现思路二、最终效果 前言 ue5角色受击没有播放受击动画,主角达到怪物身上没有反应 一、实现思路 要在Unreal Engine 5(UE5)中实现角色打击怪物并让怪物做出受击反应,你需要…...
Navicat for Snowflake 震撼首发,激活数据仓库管理全新动能
近日,Navicat 家族迎来了一位全新成员 — Navicat for Snowflake。Snowflake 是一款基于云架构的现代数据仓库解决方案,以其弹性扩展、高性能和易用性著称。这次首发的Navicat for Snowflake 专为简化 Snowflake 数据库管理任务而精心打造。它凭借其直观…...
【redis】发布订阅
Redis的发布订阅(Pub/Sub)是一种基于消息多播的通信机制,它允许消息的**发布者(Publisher)向特定频道发送消息,而订阅者(Subscriber)**通过订阅频道或模式来接收消息。 其核心特点如…...
高级java每日一道面试题-2025年2月26日-框架篇[Mybatis篇]-Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式 ?
如果有遗漏,评论区告诉我进行补充 面试官: Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式 ? 我回答: 在Java高级面试中讨论MyBatis如何将SQL执行结果封装为目标对象并返回的过程时,我们可以从过程细节和映射形式两个方面来综合解答这个问…...
linux root丢失修改密
在RHEL7下重置密码 第一种方式:光驱进入急救模式 //做之前最好 selinuxdisabled Conntinue 然后chroot /mnt/sysimag 然后编辑/etc/shadow文件 第二种方式: 1:编辑启动菜单按e,找到linux16行,在行尾加入 init/bin/sh,同时在…...
OpenCV中文路径图片读写终极指南(Python实现)
文章目录 OpenCV中文路径图片读写终极指南(Python实现)一、问题深度解析1.1 现象观察1.2 底层原因 二、中文路径读取方案2.1 终极解决方案(推荐)2.2 快速修复 三、中文路径保存方案3.1 通用保存函数3.2 使用示例 四、技术原理详解…...
linux 时间同步(阿里云ntp服务器)
1、安装ntp服务 rootlocalhost ~]# yum -y install ntp 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile* base: mirrors.nju.edu.cn* centos-sclo-rh: mirrors.nju.edu.cn* centos-sclo-sclo: mirrors.huaweicloud.com* epel: m…...
Go vs Rust vs C++ vs Python vs Java:谁主后端沉浮
一、核心性能对比(基于TechEmpower基准测试) 语言单核QPS延迟(ms)内存消耗适用场景Rust650,0000.1245MB高频交易/区块链C++720,0000.0932MB游戏服务器/实时渲染Go230,0000.45110MB微服务/API网关Java180,0001.2450MB企业ERP/银行系统Python12,0008.5220MBAI接口/快速原型技术…...
5 分钟搭建 Prometheus + Grafana 监控
一.安装 Prometheus cd /usr/local/ wget https://github.com/prometheus/prometheus/releases/download/v2.38.0/prometheus-2.38.0.linux-amd64.tar.gz tar xvf prometheus-2.38.0.linux-amd64.tar.gz ln -s prometheus-2.38.0.linux-amd64 prometheus二.安装 node_exporter…...
【机器人-基础知识】标定 - 相机内参求解原理(单应性矩阵、内参约束方程)
1. 求解目标:内参 从世界坐标系到像素坐标系的齐次坐标形式: s [ u v 1 ] K [ R t ] [ X w Y w Z w 1 ] s \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} K \, [\, R \quad t \,] \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} s uv1 K…...
【QT】-一文说清楚QT定时器怎么用
在 Qt 中,定时器(QTimer)是用来定时执行某些任务的非常有用的类。它可以帮助你在指定的时间间隔后重复执行某个函数。常见的用法是启动一个定时器,每过一段时间自动执行某个操作,比如更新 UI、检查状态或发送数据等。 …...
QT编程之JSON处理
一、核心类库及功能 Qt 提供了一套完整的 JSON 处理类库(位于 QtCore 模块),支持解析和生成 JSON 数据: QJsonDocument:表示完整的 JSON 文档,支持从 QJsonObject 或 QJsonArray 初始化。QJsonOb…...
优选算法系列(1.双指针_下)
目录 五. 有效三角形的个数(medium) 题目链接:有效三角形的个数 解法: 代码: 六:和为 s 的两个数字(easy) 题目链接:和为 s 的两个数字 解法: 代码; 七…...
江科大51单片机笔记【15】直流电机驱动(PWM)
写在前言 此为博主自学江科大51单片机(B站)的笔记,方便后续重温知识 在后面的章节中,为了防止篇幅过长和易于查找,我把一个小节分成两部分来发,上章节主要是关于本节课的硬件介绍、电路图、原理图等理论…...