使用AWK进行文本处理

awk 的基本概念

awk 是一种强大的文本处理语言,广泛用于模式匹配和数据提取。这种编程语言设计用于对文本文件进行操作,尤其适用于格式化的文本,如 CSV 或空格分隔的表格数据。下面详细介绍 awk 的一些基本概念:

1. 记录和字段

  • 记录:在 awk 中,默认的记录是指输入文本的一行。
  • 字段:每条记录默认按空白字符(空格或制表符)分割成多个字段。第一个字段可以通过 $1 访问,第二个字段是 $2,依此类推,直到最后一个字段 $NF。整条记录可以用 $0 访问。

2. 模式和动作

awk 的基本结构是“模式 { 动作 }”,模式用于指定哪些记录将被选中进行处理,动作则定义了一系列对这些记录执行的操作。

  • 模式:可以是正则表达式、条件表达式(如比较操作)、特定的记录标识(如行号),或者不指定(意味着选择所有记录)。
  • 动作:用花括号 {} 包围,包含一系列 awk 命令,如打印输出、计算、字符串操作等。

3. 内建变量

awk 提供了多个内建变量,用于处理文本数据:

  • FS:字段分隔符(Field Separator),默认是空白字符。
  • RS:记录分隔符(Record Separator),默认是换行符。
  • OFS:输出字段分隔符(Output Field Separator),默认是空格。
  • ORS:输出记录分隔符(Output Record Separator),默认是换行符。
  • NF:当前记录中的字段数量(Number of Fields)。
  • NR:已读的记录数(Number of Records)。
  • FNR:当前文件中已读的记录数(同 NR,但在处理多个文件时会为每个文件重置)。

4. awk 程序的执行流程

awk 程序通常遵循以下执行流程:

  1. BEGIN块:在读取任何输入之前执行的代码块,通常用于初始化操作。

    BEGIN { FS=":"; OFS=":"; print "Start of Report" }
    

  2. 模式和动作:对输入的每一条记录,awk 都会检查是否匹配给定的模式,如果匹配,则执行相应的动作。

    $1 > 50 { print $0 }
    

  3. END块:在读取所有输入后执行的代码块,常用于总结和完成工作。

    END { print "End of Report" }
    

5. 强大的文本处理功能

awk 支持数组(包括关联数组),提供了字符串和数学函数,支持流程控制语句(如 if、while、for),使其不仅仅是文本处理工具,还是一个完整的编程环境。

通过理解这些基本概念,你可以开始使用 awk 来编写简单到复杂的文本处理脚本,处理各种数据分析和报告任务。

awk基本命令和语法

学习 awk 的基本命令和语法是掌握这个强大文本处理工具的第一步。下面,我将详细介绍如何开始使用 awk,包括常用的命令、语法规则,以及一些实用的例子。

1. 基本语法

awk 的基本命令格式通常是这样的:

awk 'pattern { action }' input-file

  • pattern:是一个条件表达式,用于选择哪些记录(行)需要应用 action。如果省略 pattern,action 将应用于所有记录。
  • action:在大括号中,包含一系列命令,用于处理符合 pattern 的记录。

2. 打印文本和字段

awk 最常用的命令可能就是 print 了,它用于显示记录或字段。

示例:打印每一行的内容

awk '{ print }' filename.txt

示例:打印每行的第一个和第三个字段

awk '{ print $1, $3 }' filename.txt

3. 使用内建变量

awk 提供了多种内建变量,如 NR(当前行号)、NF(当前行的字段数)等。

示例:打印每行的行号和行内容

awk '{ print NR, $0 }' filename.txt

示例:打印每行的最后一个字段

awk '{ print $NF }' filename.txt

4. 字段和记录分隔符

通过设置 FS(字段分隔符)和 RS(记录分隔符),你可以改变 awk 的行为,使其适应不同格式的输入。

示例:改变字段分隔符为逗号

awk 'BEGIN { FS = "," } { print $1 }' filename.txt

5. 模式匹配

awk 允许你使用模式(通常是正则表达式)来选择要操作的记录。

示例:选择包含 "error" 的行

awk '/error/ { print $0 }' filename.txt

6. 范围模式

awk 支持范围模式,允许你选择一个开始和结束模式之间的所有记录。

示例:从包含 "START" 的行开始,到包含 "END" 的行结束

awk '/START/,/END/' filename.txt

7. BEGIN 和 END 块

BEGINEND 是特殊的模式,它们分别在处理任何输入行之前和处理完所有输入行之后执行。

示例:在开始时和结束时添加文本

awk 'BEGIN { print "Start Processing" } { print $0 } END { print "End Processing" }' filename.txt

8. 数学和字符串函数

awk 提供了一系列的数学和字符串处理函数。

示例:将每行的第一个字段转为大写

awk '{ print toupper($1) }' filename.txt

9. 处理多个文件

awk 可以同时处理多个输入文件。

 
awk '{ print FILENAME, NR, $0 }' file1.txt file2.txt

学习资源

  • 在线教程:网站如 Tutorialspoint、GeeksforGeeks 提供详细的教程。
  • 书籍:《sed & awk》是一本经典书籍,非常适合深入学习。
  • 官方文档:阅读 GNU awk 手册,了解所有功能和高级技巧。

通过上述基础知识和示例,你可以开始使用 awk 来处理和分析文本数据。随着实践的增加,你将能更深入地理解和运用 awk 的高级功能。

实际编写脚本

通过写一些简单的脚本来加深对 awk 的理解:

统计文件:编写脚本统计文本中单词的频率

要使用 awk 编写一个脚本来统计文本文件中单词的频率,你可以利用 awk 的关联数组来实现。这个脚本将读取文本文件中的每一行,分割每行成单词,并使用数组来记录每个单词出现的次数。

编写脚本

下面是一个简单的 awk 脚本,用于统计一个文本文件中各个单词的出现频率:

#!/bin/bash

# 使用 awk 统计文本中单词的频率
awk '
{
    # 默认字段分隔符是空白,所以直接遍历每个字段
    for (i = 1; i <= NF; i++) {
        # 将单词转为小写,以统一相同单词的不同形式
        word = tolower($i)
        # 去除单词周围的标点符号
        gsub(/[^a-zA-Z0-9]/, "", word)
        # 统计单词频率
        if (word != "") {
            words[word]++
        }
    }
}
END {
    # 打印每个单词及其频率
    for (w in words) {
        print w, words[w]
    }
}
' filename.txt

脚本解释

  1. 循环遍历每个字段awk 默认按空白字符(空格、制表符等)分割每行,每个字段视为一个单词。for (i = 1; i <= NF; i++) 遍历这些字段。
  2. 单词处理:使用 tolower($i) 将单词转为小写,这样不区分大小写。使用 gsub(/[^a-zA-Z0-9]/, "", word) 去除单词中的非字母数字字符,这有助于去除末尾的标点符号。
  3. 统计频率:使用关联数组 words 来存储每个单词出现的次数。如果单词不为空(if (word != "")),则其出现次数增加。
  4. 结束处理:在 END 块中,输出数组 words 中的每个元素和对应的次数。遍历数组使用 for (w in words)

使用脚本

  1. 将上述脚本保存为一个文件,例如 word_freq.sh
  2. 赋予该脚本执行权限:
    chmod +x word_freq.sh
    

  3. 运行脚本,传入要分析的文本文件名作为参数:
    ./word_freq.sh filename.txt
    

这个脚本提供了一个基础的框架,你可以根据具体需求调整和改进,例如改进单词的分割规则,或者添加更多的文本处理功能。通过这样的练习,你可以加深对 awk 功能和文本处理技巧的理解。

数据提取:提取特定条件的数据行或字段。

使用 awk 提取符合特定条件的数据行或字段是一种常见的文本处理任务。你可以利用 awk 的模式匹配和字段处理功能来实现这一点。以下是一些具体的例子,演示如何使用 awk 来提取数据:

示例 1: 提取特定条件的行

假设你有一个 CSV 文件,其中包含用户信息,格式如下:

ID,Name,Age,Email
1,John Doe,30,john.doe@example.com
2,Jane Smith,25,jane.smith@example.com
3,Bob Johnson,35,bob.j@example.com

你想提取年龄大于 30 的用户信息。

脚本:

awk -F, '$3 > 30 { print $0 }' users.csv

解释:

  • -F, 设置字段分隔符为逗号。
  • $3 > 30 是一个条件,检查第三个字段(年龄)是否大于 30。
  • { print $0 } 如果条件为真,则打印整行。

示例 2: 提取特定字段的数据

继续使用上述 CSV 文件,假设你只想提取年龄大于 30 的用户的邮箱地址。

脚本:

awk -F, '$3 > 30 { print $4 }' users.csv

解释:

  • 这个命令与前一个例子相似,只不过这次你使用 { print $4 } 来只打印第四个字段(Email)。

示例 3: 根据多个条件提取数据

假设你还想根据多个条件来过滤数据,例如提取年龄大于 25 且名字包含 "Jane" 的记录。

脚本:

 
awk -F, '$3 > 25 && /Jane/ { print $0 }' users.csv

解释:

  • && 是逻辑与运算符,用于组合多个条件。
  • /Jane/ 是一个正则表达式模式,用于匹配包含 "Jane" 的行。
  • 如果两个条件都满足,就打印整行。

示例 4: 使用 BEGIN 和 END 块

你也可以使用 BEGINEND 块来在处理前后执行特定的操作,比如设置表头或汇总。

脚本:

awk -F, 'BEGIN { print "Users Older Than 30" } $3 > 30 { print $2 } END { print "End of Report" }' users.csv

解释:

  • BEGIN 块在处理任何输入行之前执行,用于打印标题。
  • $3 > 30 { print $2 } 在条件满足时打印用户姓名。
  • END 块在处理完所有输入行后执行,用于打印结束语。

这些示例展示了如何使用 awk 来执行基本的数据提取任务。通过这种方式,你可以有效地从大量数据中提取有价值的信息,这在数据分析和日常的系统管理任务中非常有用。

数据转换:将数据从一种格式转换为另一种格式。

使用 awk 进行数据转换是一个非常实用的场景,尤其是当你需要将数据从一种格式转换为另一种更适用于特定应用的格式时。这可以包括格式的简单转换,如 CSV 转换为 TSV,或者更复杂的转换,如重塑数据结构。下面我将提供一些示例来演示如何使用 awk 完成这些任务。

示例 1: CSV 转 TSV(制表符分隔的值)

假设你有一个 CSV 文件(逗号分隔的值),你想将其转换为 TSV 文件(制表符分隔的值)。

输入 CSV 示例:

ID,Name,Age
1,John Doe,30
2,Jane Smith,25

awk 脚本:

awk -F, 'BEGIN { OFS="\t" } { print $1, $2, $3 }' input.csv > output.tsv

解释:

  • -F, 设置输入字段分隔符为逗号。
  • BEGIN { OFS="\t" } 在处理任何输入之前设置输出字段分隔符为制表符。
  • { print $1, $2, $3 } 对于输入文件的每一行,打印所有字段,字段间由 OFS 定义的制表符分隔。
  • 输出重定向到 output.tsv 文件。

示例 2: 重塑数据结构

假设你需要将数据的结构从一行多个字段转换为多行,每行两个字段,其中第一个字段是 ID,第二个字段是其他信息。

输入数据:

ID,Name,Age,Email
1,John Doe,30,john@example.com
2,Jane Smith,25,jane@example.com

awk 脚本:

awk -F, '{
    print $1, "Name", $2
    print $1, "Age", $3
    print $1, "Email", $4
}' input.csv > reshaped_data.txt

解释:

  • 对于每一行输入,生成三行输出。
  • 每行输出包括 ID 和一个其他字段的值。

示例 3: JSON 格式化输出

假设你想将 CSV 数据转换为 JSON 格式。

输入 CSV 示例:

ID,Name,Age
1,John Doe,30
2,Jane Smith,25

awk 脚本:

awk -F, 'BEGIN {
    print "["
}
NR > 1 {
    printf "\t{\n\t\t\"ID\": \"%s\",\n\t\t\"Name\": \"%s\",\n\t\t\"Age\": \"%s\"\n\t}", $1, $2, $3
    if (NR < FNR) {
        print ","
    }
}
END {
    print "\n]"
}' input.csv > output.json

解释:

  • BEGIN 块中打印 JSON 开始的方括号。
  • 对于每行数据(跳过标题行),使用 printf 按 JSON 格式打印每个字段。
  • END 块中打印结束的方括号。

这些示例展示了 awk 在数据转换中的多样性和灵活性,从简单的格式转换到复杂的数据重塑和结构化输出。这种灵活性使得 awk 成为处理和准备数据的强大工具。

数组和函数:学习如何使用 awk 中的数组和自定义函数。

awk 中,数组和函数是两个非常强大的特性,它们可以极大地增强脚本的功能和灵活性。这里我将详细介绍如何在 awk 中使用数组和定义及调用自定义函数。

1. 数组的使用

awk 支持一维和多维数组(通过模拟实现),可以用于各种数据收集和处理任务。

一维数组

示例:统计每个单词在文本中出现的次数。

awk '{
    for (i = 1; i <= NF; i++) {
        word = tolower($i)
        count[word]++
    }
}
END {
    for (word in count)
        print word, count[word]
}' input.txt

解释

  • 数组 count 用于存储每个单词的出现次数。
  • 循环通过 NF(字段数量,即单词数量)遍历每行的所有单词。
  • END 块中,遍历数组并打印每个单词及其出现次数。
多维数组

虽然 awk 本身不直接支持多维数组,但可以通过连接索引来模拟。

示例:记录不同人在不同年份的收入。

awk -F, '{
    income[$1][$2] += $3
}
END {
    for (person in income) {
        for (year in income[person]) {
            print person, year, income[person][year]
        }
    }
}' income_data.csv

解释

  • $1 是人名,$2 是年份,$3 是收入。
  • income[$1][$2] 模拟二维数组,存储每个人每年的收入总和。

2. 自定义函数

awk 允许你定义自己的函数,这可以帮助重用代码、清理脚本并使其更易于维护。

定义和使用函数

示例:编写一个函数计算并返回平均值。

function average(total, count) {
    return total / count
}

BEGIN {
    sum = 0
    n = 0
}
{
    sum += $1
    n++
}
END {
    avg = average(sum, n)
    print "Average:", avg
}

解释

  • function average(total, count) 定义了一个计算平均值的函数。
  • 在脚本的 END 部分调用 average() 函数计算平均值并打印。

小结

通过使用数组和自定义函数,awk 脚本可以更加强大和灵活。数组提供了一种方便的方式来收集和操作数据集合,而自定义函数则允许你封装复杂的逻辑,使得脚本更加模块化和可重用。实践这些特性将有助于提升你在数据处理和脚本编写方面的技能。

复杂的文本分析:学习如何处理复杂的文本分析任务,如多维数组的使用等。

处理复杂的文本分析任务是 awk 特别擅长的领域。通过利用 awk 的强大功能,如多维数组、字符串函数和模式匹配,你可以执行高级数据分析和处理。在本部分,我们将探讨一些复杂的文本分析技巧,包括如何使用多维数组和处理复杂数据结构。

1. 多维数组的使用

虽然 awk 本身不支持真正的多维数组,但可以通过字符串索引模拟多维数组的功能。这对于需要处理和分析来自不同维度的数据(如时间序列数据、分组统计数据等)非常有用。

示例:处理销售数据

假设你有一个销售数据文件,格式如下:

Date,Region,Product,Amount
2023-01-01,North,Widget,100
2023-01-01,South,Gadget,150
2023-01-02,North,Widget,80
2023-01-02,South,Gadget,200

你需要分析每个区域在每个日期的总销售额。

awk -F, 'NR > 1 { sales[$2][$1] += $4 }
END {
    for (region in sales) {
        for (date in sales[region]) {
            print date, region, sales[region][date]
        }
    }
}' sales_data.csv

解释

  • 使用逗号作为字段分隔符(-F,)。
  • 使用数组 sales 两个键:第一个是区域($2),第二个是日期($1),累加金额($4)。
  • END 块中,双层循环遍历 sales 数组,打印出每个区域每天的总销售额。

2. 使用 awk 进行数据重构和格式化

利用 awk 的文本处理功能,可以将数据从一种格式转换为另一种格式,比如从 CSV 转换为 JSON,这对于现代应用程序接口和数据交换非常有用。

示例:转换为 JSON 格式

使用前面的销售数据,将其转换为 JSON 格式。

awk -F, 'BEGIN {
    print "["
    first = 1
}
NR > 1 {
    if (!first) print ","
    first = 0
    printf "\t{\"Date\": \"%s\", \"Region\": \"%s\", \"Product\": \"%s\", \"Amount\": %s}", $1, $2, $3, $4
}
END {
    print "\n]"
}' sales_data.csv

解释

  • BEGIN 块中,打印 JSON 的开始。
  • 对于每行数据(跳过标题行),使用 printf 打印 JSON 对象。
  • 使用 first 变量控制逗号的打印,避免在第一个元素后打印。
  • END 块中,结束 JSON 数组。

3. 复杂的文本处理

对于包含复杂结构的文本(如日志文件、配置文件等),awk 可以使用其正则表达式能力和字符串处理函数来提取和处理数据。

示例:解析日志文件

假设有一个简单的日志文件,需要提取其中的错误消息及其时间戳。

awk '/ERROR/ { print $1, $2, $3, $4 }' server.log

解释

  • 搜索包含 "ERROR" 的行。
  • 打印出错误发生的日期和时间(假设这些信息位于行的前几个字段)。

通过上述示例,你可以看到 awk 在处理多维数据、格式转换和复杂文本分析方面的灵活性和强大功能。掌握这些技能可以帮助你解决许多实际的数据处理问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

立创-IS61LV5128AL-10TLI功能参数及连接方法

IS61LV5128AL-10TLI功能和参数介绍-公司新闻-配芯易-深圳市亚泰盈科电子有限公司 制造商:ISSI 产品品种:静态随机存取存储器 RoHS:是 存储容量:4 Mbit 安排:512 k x 8 访问时刻:10 ns 最大时钟频率:100 MHz 接口类型:Parallel 电源电压-最大:3.63 V 电源电压-最小:3.135 V 电源…

eNSP-OSPF综合实验

目录 实验要求 配置IP 构建外部RIP协议用户组 配置公网通 构建MGRE隧道 创建隧道 配置下一跳解析协议&#xff08;NHRP&#xff09; OSPF私网通 area 0&#xff08;公网区域不宣告&#xff09;&#xff1a; area 1&#xff1a; area 2&#xff1a; area 3&#xff…

案例实践 | InterMat:基于长安链的材料数据发现与共享系统

案例名称&#xff1a;InterMat-基于区块链的材料数据发现与共享系统 ■ 建设单位 北京钢研新材科技有限公司 ■ 用户群体 材料数据上下游单位 ■ 应用成效 已建设10共识节点、50轻节点&#xff0c;1万注册用户 案例背景 材料是构成各种装备和工程的物质载体&#xff0c…

【C++题解】1345. 玫瑰花圃

问题&#xff1a;1345. 玫瑰花圃 类型&#xff1a;基本运算、小数运算 题目描述&#xff1a; 有一块nn&#xff08;n≥5&#xff0c;且 n 是奇数&#xff09;的红玫瑰花圃&#xff0c;由 nn 个小正方形花圃组成&#xff0c;现要求在花圃中最中间的一行、最中间的一列以及 4 个…

cesium加载倾斜影像数据(模拟雨、雪、雾、无人机飞行、测距、箭头标绘、电子围栏等)

实现效果如下&#xff1a; 功能菜单如下&#xff1a; 加载倾斜影像核心代码&#xff1a; var palaceTileset new Cesium.Cesium3DTileset({url: http://127.0.0.1:9002/tileset.json,//控制切片视角显示的数量&#xff0c;可调整性能maximumScreenSpaceError: 0.1,maximumNum…

Real3DPortrait照片对口型,数字人,音频/视频驱动数字人

先看效果 上传一张图片和一段音频&#xff0c;照片如下&#xff1a; 合成后效果如下&#xff1a; 照片对口型-音频驱动 支持音频驱动和视频驱动&#xff0c;视频可以使照片有参照视频中的口型和和动作。 项目地址 https://github.com/yerfor/Real3DPortrait 我的环境 win…

CentOS-Stream-9升级openssh9.7p

CentOS Stream 9 ssh -V需要的RPM包 openssh-9.7p1-1.el9.x86_64.rpm openssh-clients-9.7p1-1.el9.x86_64.rpm openssh-server-9.7p1-1.el9.x86_64.rpm 编译openssh openssh官方只提供源码包&#xff0c;我们选择自己将源码编译为rpm包来升级环境的openssh&#xff0c;需要…

UE5 C++ 使用TimeLine时间轴实现开关门

一.添加门头文件 和 声明 #include "Components/TimelineComponent.h" #include"Components/BoxComponent.h" UPROPERTY(EditAnywhere,BlueprintReadWrite,Category "MyCurve")UCurveFloat* MyCurveFloat;UPROPERTY(EditAnywhere, BlueprintR…

前端网络---http缓存

什么是http缓存&#xff1f; 1、HTTP 缓存会存储与请求关联的响应&#xff0c;并将存储的响应复用于后续请求。 2、缓存的原理是在首次请求后保存一份请求资源的响应副本&#xff0c;当用户再次发起相同请求时&#xff0c;判断缓存是否命中&#xff0c;如果命中则将前面的响应…

如何保障UDP传输中数据文件不丢失?

UDP协议因其低时延和高速传输的特性&#xff0c;在实时应用和大量数据传输领域中发挥着不可或缺的作用。但是&#xff0c;由于UDP是一种无连接的通讯协议&#xff0c;它并不确保数据包的顺序、完整性和可靠性。 为了解决UDP传输中数据一致性的问题&#xff0c;技术专家们进行了…

HTML不常用的文本标签

1.标签如下&#xff1a; 代码及相关内容 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>不常用的文…

2024第二十一届五一数学建模C题思路 五一杯建模思路

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

大数据测试:构建Hadoop和Spark分布式HA运行环境

随着大数据技术的不断发展&#xff0c;Hadoop和Spark已成为处理大规模数据的热门框架。在生产环境中&#xff0c;高可用性&#xff08;HA&#xff09;是至关重要的&#xff0c;以确保数据处理和分析任务不受中断。本文将详细介绍如何构建 Hadoop和Spark分布式HA运行环境&#x…

Ubuntu 22.04 配置VirtualBox安装Windows 10虚拟机

Ubuntu 22.04 配置VirtualBox安装Windows 10虚拟机 文章目录 Ubuntu 22.04 配置VirtualBox安装Windows 10虚拟机1.安装virtualbox2.下载Window.iso文件并载入3.问题解决3.1 Kernel driver not installed (rc-1908)3.2 VT-x is disabled in the BIOS for all CPU modes 4.安装Wi…

中文编程入门(Lua5.4.6中文版)第十三章 Lua 文件操作

在《Lua世界》的冒险旅途中&#xff0c;勇士们时常需要与神秘的文本卷轴打交道。为了更好地掌握这些知识宝藏&#xff0c;Lua I/O库提供了两种强大的探索模式&#xff1a;简单模式和完全模式&#xff0c;助你轻松应对各类文献挑战。 简单模式&#xff1a;初识卷轴 简单模式如…

如何精心挑选合适的软件公司

选择一家合适的软件公司对于小程序商城的开发与运营而言&#xff0c;具有举足轻重的意义。面对市场上琳琅满目的软件公司&#xff0c;如何找到那个真正适合自己的合作伙伴呢&#xff1f;接下来&#xff0c;我们将从需求分析、公司资质、项目案例、服务态度和成本效益五个方面&a…

Linux0.11 源码中的内存分页机制

学习Linux的源码&#xff0c;《深入linux 内核架构》这本书看起来就让人害怕&#xff0c;然后就想着看看早期的linux版本的源码&#xff0c;从网上查看资料发现linux0.11 这个版本有很多人拿来当成教学版本&#xff0c;而且也有很多的参考书以这个版本作为基础来讲解&#xff0…

【数据挖掘】实验8:分类与预测建模

实验8&#xff1a;分类与预测建模 一&#xff1a;实验目的与要求 1&#xff1a;学习和掌握回归分析、决策树、人工神经网络、KNN算法、朴素贝叶斯分类等机器学习算法在R语言中的应用。 2&#xff1a;了解其他分类与预测算法函数。 3&#xff1a;学习和掌握分类与预测算法的评…

UTS iOS插件

1、UTS插件无法出现 再uniapp x中使用时&#xff0c;必须给这个插件高度和宽度&#xff0c;否则出不来&#xff01; <uts-hello-view buttonText"点击按钮内容" style"width:375px;height: 375px;background-color: aqua;"></uts-hello-view>…

关于外网java后端服务访问内网minio中间件,因连接minio超时,启动失败问题

注&#xff1a;服务器情况&#xff1a;2台服务器&#xff0c;内网服务器包含&#xff08;activemq、minio、nginx、redis、mysql、后端java服务&#xff09;。外网服务器只有后端java服务&#xff0c;访问内网的中间件&#xff08;内网服务器开放了部分指定端口&#xff09; 问…
最新文章