Linux三剑客(grep、awk和sed)操作及与管道结合使用

1. 总览

grepsedawk被称为Linux三剑客,是因为它们在文本处理和数据操作方面极其强大且常用。

Linux三剑客在文件处理中的作用:

  • grep(数据查找定位):文本搜索工具,在文件中搜索符合正则表达式的文本内容,并打印匹配的行。

  • awk(数据切片):文本处理工具,主要用于对结构化数据进行格式化和拆分处理,进行数据统计和报告生成;

  • sed(数据修改):流编辑器,对文本进行插入、删除、替换、提取等操作;

2. grep

grep是一个用于文本搜索的工具,可以在文件中搜索符合正则表达式的文本内容,并打印匹配的行。它简单、快速,是进行文本搜索和过滤的首选工具。

grep工具的功能

  • 文本模式搜索

  • 正则表达式匹配

  • 高亮显示匹配内容

  • 支持递归搜索目录

2.1 基本格式

grep [选项参数] pattern [file...]

参数说明:

1)pattern:过滤条件,可以是正则表达式;

2)file:要搜索的文件(一个或多个),若不指定文件,grep 会从标准输入读取。

3)常用选项参数:

参数说明
-i不区分大小写
-v排除匹配结果
-r 或 -R递归搜索目录下的所有文件
-l仅显示包含匹配模式的文件名
-L仅显示不包含匹配模式的文件名
-n显示匹配行与行号
-c只统计匹配的行数
-o只输出匹配到的内容
-w只匹配过滤到的单词
-A num显示匹配行及之后的 num 行
-B num显示匹配行及之前的 num 行
-C num显示匹配行及前后各 num 行
-E使用扩展正则表达式(等同于 egrep
-F使用固定字符串模式(等同于 fgrep
-P使用 Perl 正则表达式

4)grep中正则表达式字符集整理:

  • 普通字符:匹配自身。例如,grep 'a' file.txt 匹配文件中所有包含字符 a 的行。

  • 点(.):匹配任意单个字符(除换行符外)。例如,grep 'a.c' file.txt 匹配 ac 之间有一个字符的行。

  • 字符集([...])
    • [abc]:匹配字符 abc 中的任意一个。

    • [^abc]:匹配除 abc 之外的任意字符。

    • [a-z]:匹配从 az 的任意字符(包括范围内的字符)。

  • 锚点(^ 和 $)
    • ^:匹配行首。例如,grep '^a' file.txt 匹配以 a 开头的行。

    • $:匹配行尾。例如,grep 'a$' file.txt 匹配以 a 结尾的行。

  • 转义字符(\):用来转义元字符,使其失去特殊含义。例如,grep '\.' file.txt 匹配包含 . 字符的行

扩展正则表达式字符集(使用 grep -Eegrep:

  • |:逻辑或,匹配左右任意一个表达式。例如,grep -E 'a|b' file.txt 匹配包含 ab 的行

  • ():用于分组。例如,grep -E '(abc|def)' file.txt 匹配包含 abcdef 的行。

  • ?:匹配前面的字符 0 次或 1 次。例如,grep -E 'colou?r' file.txt 匹配 colorcolour

  • *:匹配前面的字符 0 次或多次。例如,grep -E 'ab*c' file.txt 匹配 acabcabbc

  • +:匹配前面的字符 1 次或多次。例如,grep -E 'ab+c' file.txt 匹配 abcabbc 等。

  • {}:{n}表示匹配前面的字符恰好 n 次;{n,}表示匹配前面的字符至少 n 次;{n,m}表示匹配前面的字符至少 n 次,至多 m 次。

2.2 常用命令举例

假设有一个file.txt文件,内容如下:

name,age,sex,salary
Alice,30,女,9000
Bob,25,男,8000
Carol,35,男,7000
Karry,21,女,5000
Ross,40,女,6500
Joan,38,男,10000
Linda,46,女,5000
Lily,26,女,3000
KARRY,27,女,6000

1. 基本搜索

# 搜索文件 file.txt 中包含 karry 的行
grep "Karry" file.txt

2. 忽略大小写

# 搜索文件 file.txt 中包含 karry(不区分大小写)的行。
grep -i "karry" file.txt

3. 递归搜索目录

# 递归搜索目录 /path/to/directory 中所有文件,查找包含 pattern 的行
grep -r "Karry" /opt/

4. 显示匹配行号

# 搜索文件 file.txt 中包含 karry 的行,并显示匹配行号
grep -n "Karry" file.txt

5. 仅显示匹配文件名

# 搜索当前目录下所有 `.txt` 文件,显示包含 `pattern` 的文件名。
grep -l "Karry" *.txt

6. 反向匹配

# 搜索文件 `file.txt` 中不包含 `pattern` 的行。
grep -v "Karry" file.txt

7. 显示匹配行及之后的行

# 搜索文件 `file.txt` 中包含 `pattern` 的行,并显示匹配行及之后的 3 行。
grep -A 3 "Karry" file.txt

8. 显示匹配行及之前的行

# 搜索文件 `file.txt` 中包含 `pattern` 的行,并显示匹配行及之前的 3 行
grep -B 3 "Karry" file.txt

9. 显示匹配行及前后行

# 搜索文件 `file.txt` 中包含 `pattern` 的行,并显示匹配行及前后各 3 行。
grep -C 3 "Karry" file.txt

10. 使用扩展正则表达式

# 搜索文件 `file.txt` 中包含 `Ka` 或 `Bo` 的行。
grep -E "Ka|Bo" file.txt

11. 匹配整个单词

# 搜索文件 `file.txt` 中包含整个单词 `word` 的行。
grep -w "Karry" file.txt

12. 仅显示匹配的部分

# 搜索文件 `file.txt` 中的 `Karry` 并仅显示匹配的部分。
grep -o "Karry" file.txt

3. awk

awk是一个强大的文本处理工具,主要用于对结构化数据进行模式扫描和处理,有着强大的文本格式化能力。它支持复杂的操作和脚本编写,能够进行模式匹配、文本处理、数据报告生成等。

awk功能:

  • 字符串处理和替换;

  • 数据统计和报告生成;

  • 复杂的条件判断和循环处理;

  • 数据格式转换。

3.1 基本格式

awk [选项参数] 'pattern { action }' file

参数说明:

1)pattern:匹配的模式,支持正则表达式。

2)action:在匹配模式的行上执行的操作。

3)常用选项参数:

参数说明
-F fs指定输入字段分隔符,默认是空格或制表符
-v var=valueawk程序中的变量赋初值
-f program-file从指定文件读取awk程序

4)常见的内置变量

内置变量说明
$0表示完整的输入记录
$n表示指定分隔符后,当前指定的第n个字段
FS表示字段输入分隔符,默认以空格为分隔符
OFS表示字段输出分隔符
NF表示字段的个数,即以分隔符分割后,当前行一共有多少个字段
NR表示当前记录数,即行数

3.2 常用命令举例

假设有一个file.txt文件,内容如下:

name,age,sex,salary
Alice,30,女,9000
Bob,25,男,8000
Carol,35,男,7000
Karry,21,女,5000

1.基本示例

# 打印文件file.txt的每一行
awk '{ print }' file.txt

2.指定字段分隔符

假设文件内容用逗号分隔,打印第1、第3个字段。(其中 -F ',' 可以直接简写成-F,)

awk -F ',' '{ print $1, $3 }' file.txt

3.使用模式匹配

# 打印包含“Karry”字符串的行
awk '/Karry/ { print }' file.txt

4.按条件过滤

# 打印第2列字段(age)大于30的人的姓名
awk -F ',' '$2 > 30 { print $1 }' file.txt

5.使用变量

# 为变量age赋值并使用
awk -F ',' -v age=30 '$2 > age { print $0 }' file.txt

6.BEGIN和END块

  • BEGIN块在处理任何输入行之前执行。

  • END块在处理完所有输入行后执行。

# 计算file.txt文件中第4列字段(工资)的总和
awk -F ',' 'BEGIN { sum=0 } { sum += $4 } END { print sum }' file.txt

7.使用-f选项从脚本文件中读取程序

1)创建一个名为script.awk脚本文件

vim  script.awk

并将以下内容写入脚本文件中:

#!/usr/bin/awk -f# 使用逗号作为字段分隔符
BEGIN { FS = "," }# 打印第1和第3字段
{ print $1, $3 }

详细说明:

  • 脚本文件头部#!/usr/bin/awk -f 指定用 awk 解释器来运行这个脚本文件。

  • BEGIN 块BEGIN { FS = "," } 设置字段分隔符为逗号(,)。

  • 主代码块{ print $1, $3 } 打印每行的第1和第3字段。

保存文件并关闭编辑器 :wq!

2)运行awk脚本文件(有两种方式) 方式一:直接用 awk 命令来执行这个脚本

awk -f script.awk file.txt

方式二:授权脚本文件具有可执行权限,然后运行脚本文件

# 确保脚本文件具有可执行权限:
chmod +x script.awk#运行脚本文件,并指定输入文件:
./script.awk file.txt

8. 格式转换

# 将file.txt文件格式转换为TSV(Tab Separated Values)格式
awk 'BEGIN { FS=","; OFS="\t" } { $1=$1; print }' file.txt

说明:

  • BEGIN { FS=","; OFS="\t" }:在处理开始时,将输入字段分隔符设置为逗号,将输出字段分隔符设置为制表符。

  • $1=$1; print:通过赋值操作强制awk重新解析字段,然后输出。

9.提取并格式化指定列

# 假设想提取 `Name` 和 `Age` 列,并格式化输出为 "Name: Age years old"
awk -F ',' '{ print "Name: " $1 ", Age: " $2 " years old" }' file.txt

10.转换为JSON格式

将file.txt文件转换为JSON格式:

awk -F, 'NR==1 {for (i=1; i<=NF; i++) header[i]=$i;next
} {printf("{");for (i=1; i<=NF; i++) {printf("\"%s\":\"%s\"", header[i], $i);if (i<NF) printf(", ");}printf("}\n");
}' file.txt

11.转换为HTML表格

将file.txt转换为HTML表格:

awk -F, 'BEGIN {print "<table border=\"1\">";print "<tr><th>Name</th><th>Age</th><th>Gender</th></tr>";
} 
NR>1 {printf("<tr>");for (i=1; i<=NF; i++) printf("<td>%s</td>", $i);printf("</tr>\n");
} 
END {print "</table>"
}' file.txt

4. sed

sed是一个流编辑器,主要用于对文本进行非交互式编辑。它可以进行插入、删除、替换、提取等操作,是文本处理和转换的利器。

功能

  • 文本替换和删除;

  • 模式匹配和文本插入;

  • 支持脚本编写进行复杂的文本处理;

  • 数据流操作。

4.1 基本格式

sed [选项参数] 'script' [file]

参数说明:

1)script:sed 内置的命令字符。主要是用于对文件进行增删改查等操作。

常见内置命令字符:

  • a:表示对文本进行追加操作,在指定行后面添加一行或多行文本;

  • d:表示删除匹配行;

  • i:表示插入文本,在指定行前添加一行或多行文本;

  • p:表示打印匹配行内容,通常与-n一同使用;

  • s/正则/替换内容/g:表示匹配正则内容,然后替换内容(支持正则表达式),结尾g表示全局匹配;

2)file:要处理的输入文件。若不指定文件,sed会从标准输入读取。

3)常用选项参数:

常见选项参数说明
-n表示取消默认的sed输出,通常与sed内置命令p一起使用
-e script直接在命令行上添加要执行的sed脚本
-f script-file从脚本文件中读取sed命令
-i [SUFFIX]直接修改文件内容,而不是输出到标准输出。可以选择性地备份文件。如果不加-i,sed修改的是内存数据。
-r使用扩展正则表达式
s将文件视为独立的文件,而不是单一的流

4.2 常用命令举例

假设有一个file.txt文件,内容如下:

name,age,sex,salary
Alice,30,女,9000
Karry,21,女,5000
Joan,38,男,10000
Lily,26,女,3000
KARRY,27,女,6000

1. 文本替换

# 基本替换:将`file.txt`中的第一个匹配`Karry`的字符串替换为`Bob`
sed 's/Karry/Bob/' file.txt# 忽略大小写替换:将`file.txt`中的所有匹配`Karry`的字符串替换为`Bob`
sed 's/Karry/Bob/Ig' file.txt# 全局替换:将`file.txt`中的所有匹配`Lily`的字符串替换为`karry`
sed 's/Lily/karry/g' file.txt# 指定行替换:将`file.txt`中的第4行中匹配`Joan`的字符串替换为`Carol`
sed '4s/Joan/Carol/' file.txt# 行号范围替换:将`file.txt`中的第3到第6行中匹配`KARRY`的字符串替换为`karry`
sed '3,6s/KARRY/karry/Ig' file.txt

使用 sed 进行文本替换时,默认情况下,sed 只是将替换后的文本输出到标准输出(通常是终端),而不会直接修改源文件。只有使用-i参数进行替换,会修改源文件。

# 替换源文件内容:直接在`file.txt`中替换所有匹配`Karry`的字符串为`Bob`,并保存修改(修改源文件)
sed -i 's/Karry/Bob/g' file.txt#备份原始文件,使用`-i`参数加上备份扩展名来实现,进行替换操作之前会创建一个`file.txt.bak`备份文件
sed -i.bak 's/Karry/Bob/g' file.txt

2. 文本删除

# 删除某行:删除`file.txt`中的第5行
sed '3d' file.txt# 行号范围删除:删除`file.txt`中的第2到第4行。
sed '3,4d' file.txt

3. 文本插入

# 插入行:在`file.txt`中的第2行之前插入`This is a new line.`
sed '2i\This is a new line.' file.txt# 追加行:在`file.txt`中的第3行之后追加`This is a new line.`
sed '3a\This is a new line.' file.txt

4. 打印模糊匹配行

# 只打印`file.txt`中包含`ka`的行
sed -n '/ka/p' file.txt

5. 从文件读取脚本

1)创建一个 sed 脚本文件

vim `script.sed`

并将以下内容写入脚本文件中:

3a\
This is a new line.

2)使用 sed 执行脚本文件 使用 sed 命令并指定 -f 选项来读取和执行 script.sed 文件中的命令:

sed -f script.sed file.txt

5. 与管道结合使用

Linux三剑客grepawksed是文本处理的强大工具,经常与管道( | )结合使用,能进行复杂的文本操作和数据处理。用管道符( | )连接,表示将前一个命令的输出作为下一个命令的输入。

假设有一个日志文件file.log,内容如下:

2023-06-25 12:34:56 info User1 logged in
# 连接数据库失败
2023-06-25 12:35:00 error Failed to connect to database
2023-06-25 12:35:05 info User2 logged out
2023-06-25 12:36:10 warn Disk space low2023-06-25 12:36:15 info User3 logged in
2023-06-25 12:37:00 error Time out

5.1 查找并替换文件中的文本

使用 grep 查找特定的文本行,用 sed 替换:

# 查找包含 `error` 的行并将 `error` 替换为 `warning`
grep 'error' file.log | sed 's/error/warning/g'

5.2 统计日志文件中特定模式的出现次数

使用 grep 查找特定模式,然后用 wc 统计行数:

# 统计 `file.log` 中 `error` 的出现次数:
grep 'error' file.log | wc -l

5.3 过滤空行和注释行后显示文件内容

使用 grepsed 去除空行和注释行:

grep -v '^#' file.log | sed '/^$/d'

命令拆解:

1)grep -v '^#' file.log:grep用于文件中搜索匹配行;-v表示反转匹配,即选出不匹配指定模式的行。'^#'表示匹配以 # 开头的行;

2)sed '/^$/d':sed用于逐行处理文本;/^$/是正则表达式,匹配空行(行首紧跟行尾,即行中没有任何字符);d表示删除命令,表示删除匹配的行。

5.4 组合命令过滤并格式化输出

使用 grep 过滤日志,awk 格式化输出:

# 从日志文件中提取 `ERROR` 行,并显示时间和错误信息:
grep 'error' file.log | awk '{print $1, $2, $3, $5}'

5.5 对文件中的数值列进行排序和去重

使用 awk 提取数值列,sort 排序,uniq 去重:

awk '{print $2}' file.log | sort -n | uniq

命令拆解:

1)awk '{print $2}' file.log:打印 file.log 文件每行的第2个字段,awk默认是空格或制表符作为分隔符;

2)sort -n:将上一步输出的数据按数值排序。sort命令用于对文本行进行排序,-n 选项表示按数值进行排序。

3)uniq: 移除相邻的重复行,输出唯一的行。只有在相邻行重复时,uniq 才会去重,因此通常与 sort 结合使用。

5.6 统计日志文件中每种日志级的出现次数

awk '{count[$3]++} END {for (level in count) print level, count[level]}' file.log

命令解析:

1){count[$3]++}:awk的主处理块,在读取文件的每一行时执行,遇到相同的第三列值时,对应的计数器count[$3]` 自增 1。

2)END {for (level in count) print level, count[level]}awk 的结束块,在处理完所有行后执行。for循环遍历 count 数组中的所有键,打印每个键(即第三列的值)及其对应的计数器值(即出现次数)。

5.7 grep、awk、sed三者结合使用

筛选日志文件 file.log中包含"error"的行,并从中提取出时间戳和错误信息,然后进行一些格式化处理:

grep "ERROR" log.txt | awk '{print $1, $2, $5}' | sed 's/\[//g; s/\]//g'

命令解析:

  • grep "ERROR" log.txt:筛选出包含 "ERROR" 的行。

  • awk '{print $1, $2, $5}':提取每行的第1列、第2列和第5列。

  • sed 's/\[//g; s/\]//g':删除方括号。

5.8 多文件操作

将多个文件内容合并后进行处理:

cat file.log file.txt | grep 'error' | sort | uniq

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

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

相关文章

Redis原理-数据结构

Redis原理篇 1、原理篇-Redis数据结构 1.1 Redis数据结构-动态字符串 我们都知道Redis中保存的Key是字符串&#xff0c;value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串&#xff0c;因为C语言字符串存…

【大模型LLM面试合集】大语言模型架构_attention

1.attention 1.Attention 1.1 讲讲对Attention的理解&#xff1f; Attention机制是一种在处理时序相关问题的时候常用的技术&#xff0c;主要用于处理序列数据。 核心思想是在处理序列数据时&#xff0c;网络应该更关注输入中的重要部分&#xff0c;而忽略不重要的部分&…

BJT的结构(晶体管电压/电流+β+晶体管特性曲线/截止与饱和+直流负载线(Q点))+单片机数码管基础

2024-7-8&#xff0c;星期一&#xff0c;20:23&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;晴。今天没有什么特殊的事情发生&#xff0c;周末休息了两天&#xff0c;周一回来继续学习啦&#xff0c;加油加油&#xff01;&#xff01;&#xff01; 今日完成模电…

视频号矩阵管理系统:短视频内容营销的智能助手

随着短视频行业的蓬勃发展&#xff0c;视频号矩阵管理系统应运而生&#xff0c;为内容创作者和品牌提供了一站式的短视频管理和营销解决方案。本文将深入探讨视频号矩阵管理系统的核心功能&#xff0c;以及它如何助力用户在短视频营销领域取得成功。 视频号矩阵管理系统概述 …

在PyTorch中使用TensorBoard

文章目录 在PyTorch中使用TensorBoard1.安装2.TensorBoard使用2.1创建SummaryWriter实例2.2利用add_scalar()记录metrics2.3关闭Writer2.4启动TensorBoard 3.本地连接服务器使用TensorBoard3.1方法一&#xff1a;使用SSH命令进行本地端口转发3.2方法二&#xff1a;启动TensorBo…

如何将资源前端通过 Docker 部署到远程服务器

作为一个程序员&#xff0c;在开发过程中&#xff0c;经常会遇到项目部署的问题&#xff0c;在现在本就不稳定的大环境下&#xff0c;前端开发也需要掌握部署技能&#xff0c;来提高自己的生存力&#xff0c;今天就详细说一下如何把一个前端资源放到远程服务器上面通过docker部…

【Python】不小心卸载pip后(手动安装pip的两种方式)

文章目录 方法一&#xff1a;使用get-pip.py脚本方法二&#xff1a;使用easy_install注意事项 不小心卸载pip后&#xff1a;手动安装pip的两种方式 在使用Python进行开发时&#xff0c;pip作为Python的包管理工具&#xff0c;是我们安装和管理Python库的重要工具。然而&#x…

产品经理技能揭秘:如何巧妙启发需求,引领市场新潮流

文章目录 引言一、需求启发的定义二、需求启发的艺术三、需求启发的重要性四、需求启发的流程五、需求启发的问题与挑战内部自身的问题与挑战&#xff1a;挑战一&#xff1a;知识的诅咒挑战二&#xff1a;做与定义的不同挑战三&#xff1a;沟通障碍挑战四&#xff1a;需求变更频…

solidity:构造函数和修饰器、事件

构造函数​ 构造函数&#xff08;constructor&#xff09;是一种特殊的函数&#xff0c;每个合约可以定义一个&#xff0c;并在部署合约的时候自动运行一次。它可以用来初始化合约的一些参数&#xff0c;例如初始化合约的owner地址&#xff1a; address owner; // 定义owner变…

电脑找回彻底删除文件?四个实测效果的方法【一键找回】

电脑数据删除了还能恢复吗&#xff1f;可以的&#xff0c;只要我们及时撤销上一步删除操作&#xff0c;还是有几率找回彻底删除文件。 当我们的电脑文件被彻底删除后&#xff0c;尽管恢复的成功率可能受到多种因素的影响&#xff0c;但仍有几种方法可以尝试找回这些文件。本文整…

使用 docker buildx 构建跨平台镜像

buildx是Docker官方提供的一个构建工具&#xff0c;它可以帮助用户快速、高效地构建Docker镜像&#xff0c;并支持多种平台的构建。使用buildx&#xff0c;用户可以在单个命令中构建多种架构的镜像&#xff0c;例如x86和arm架构&#xff0c;而无需手工操作多个构建命令。此外bu…

【React Hooks原理 - useCallback、useMemo】

介绍 在实际项目中&#xff0c;useCallback、useMemo这两个Hooks想必会很常见&#xff0c;可能我们会处于性能考虑避免组件重复刷新而使用类似useCallback、useMemo来进行缓存。接下来我们会从源码和使用的角度来聊聊这两个hooks。【源码地址】 为什么要有这两个Hooks 在开始…

使用selenium定位input标签下的下拉框

先来看一下页面效果&#xff1a;是一个可输入的下拉列表 再来看一下下拉框的实现方式&#xff1a; 是用<ul>和<li>方式来实现的下拉框&#xff0c;不是select类型的&#xff0c;所以不能用传统的select定位方法。 在着手定位元素前一定一定要先弄清楚下拉列表…

前后端的学习框架

前后端的学习框架 视频链接&#xff1a;零基础AI全栈开发系列教程&#xff08;一&#xff09;_哔哩哔哩_bilibili

汇凯金业:数字货币对经济的影响有哪些

随着信息技术的飞速发展&#xff0c;数字货币作为一种新兴的货币形态&#xff0c;正逐步走进人们的视野&#xff0c;并对传统经济体系产生着深远影响。它不仅革新了交易方式&#xff0c;更在重塑金融格局、赋能经济发展等方面展现出巨大潜力。 一、交易效率的“加速器” 数字…

xxl-job集成SpringBoot

安装xxl-job客户端一般有很多方式&#xff0c;我这里给大家提供两种安装方式&#xff0c;包含里面的各项配置等等。 前期需要准备好MySQL数据库。复制SQL到数据库里面。 # # XXL-JOB v2.4.2-SNAPSHOT # Copyright (c) 2015-present, xuxueli.CREATE database if NOT EXISTS x…

项目机会:4万平:智能仓,AGV,穿梭车,AMR,WMS,提升机,机器人……

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 如下为近期国内智能仓储物流相关项目的公开信息线索&#xff0c;这些项目具体信息会发布到知识星球&#xff0c;请感兴趣的球友先人一步到知识星球【智能仓储物流技术研习社】自行下载…

《SoC设计方法与实现》:全面掌握系统芯片设计精髓(可下载)

SoC&#xff08;System on Chip&#xff0c;系统级芯片&#xff09;设计是一项复杂而精细的工程活动&#xff0c;它涉及到将一个完整的电子系统的所有组件集成到一个单一的芯片上&#xff0c;包括处理器核心、内存、输入/输出端口以及可能的其他功能模块。这种集成不仅要求设计…

oracle存储结构-----逻辑存储结构(表空间、段、区、块)

文章目录 oracle存储结构图&#xff08;逻辑存储物理存储&#xff09;oracle逻辑存储结构图逻辑存储结构、表空间、段、区、数据块的关系&#xff1a;1、数据 块&#xff08;block&#xff09;---逻辑存储最小单位2、 数据区&#xff08;extent&#xff09;--存储空间分配和回收…

【AutoencoderKL】基于stable-diffusion-v1.4的vae对图像重构

模型地址&#xff1a;https://huggingface.co/CompVis/stable-diffusion-v1-4/tree/main/vae 主要参考:Using-Stable-Diffusion-VAE-to-encode-satellite-images sd1.4 vae 下载到本地 from diffusers import AutoencoderKL from PIL import Image import torch import to…