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

Linux——Shell编程之正则表达式与文本处理器(笔记)

目录

基础正则表达式

1:基础正则表达式示例

(4)查找任意一个字符“.”与重新字符“*”

(5)查找连续字符范围“{ }”

文本处理器

一、sed工具

二、awk工具

(1)按行输出文本

(2)按字段输出文本

(3)通过管道、双引号调用 she11 命令


基础正则表达式

1:基础正则表达式示例

    下面的操作需要提前准备一个名为 test.txt 的测试文件,文件具体内容如下所示:

[root@localhost ~]# cat test.txt
he was short and fat, He was wearing a blue polo shirt with black pants. The home
of Football on BBc Sport online.
the tongue is boneless but it breaks bones.12!google is the best tools for search keyword, The year ahead will test our politicalestablishment to the limit. P3 141592653589793238462643383249901429a wood cross!
Actions speak louder than words
#N0ood #
#N000o0ood #
Axyzxуzxyzxy2C
I bet this place is really spooky late at night!
Misfortunes never come alone/single.
I shouldn't have lett so tast.

(1)查找特定字符

[root@localhost w]# grep -n"the" test.txt
4:the tongue is boneless but it breaks bones.12!
5:google is the best tools for search keyword, 6:The year ahead will test our politicalestablishment to the limit.
Iroot@localhost w]# grep in "the' test.txt
3:The home of Football on 8Bc Sport online. 4:the tongue is boneless but it breaks
bones.121
5:google is the best tools for search keyword, 6:The year ahead will test our political
establishment to the limit.
若反向选择,如查找不包含“the”字符的行,则需要通过 grep 命令的“-v"选项实现,并配合“-n”·起使用显示行号。
[rootglocalhost ~]# grep -vn "the' test.txt
1:he was short and fat, 2:He was wearing a blue polo shirt with black pants. 3:Thehome of football on BBc Sport online,7:P-3.1415926535897932384626433832499014298:a wood cross!
9:Actions speak louder than words
10:
11:#woood #
12:#wo0oo0o0d #
13:Axyzxyzxyzxy2C
14:I bet this place is really spooky late at night!
15:Misfortunes never come alone/single, 16:I shouldn't have lett so tast.

(2)利用中括号“[ ]”l来查找集合字符

[rootglocalhost ~]# grep -n 'sh[io]rt" test.txt1:he was short and fat, 2:He was wearing a blue polo shirt with black pants.
若要查找包含重复单个字符“oo"时,只需要执行以下命令即可
[rootglocalhost ~]# grep -n 'oo' test.txt
3:The home of Football on 8Bc Sport online, 5:google is the best tools for search
keyword. 8:a wood cross!
11:#woood #
12:#wo0oocood #
14:I bet this place is really spooky late at night!
若查找“oo”前面不是“w”的字符串,只需要通过集合字符的反向选择“[^]”来实现该目的。例如执行"grep -n'[^w]oo"test.txt"命令表示在 test.txt 文本中査找“oo"前面不是“w”的字符串。
[rootglocalhost ~]# grep -n'[^w]oo' test.txt3:The home of Football on BBc Sport online. 5:google is the best tools for searchkeyword. 11:#woood #
12:#wo0o00o0d #
14:I bet this place is really spooky late at night!
若查找“oo”前面不是“w”的字符串,只需要通过集合字符的反向选择“[^]”来实现该目的。例如执行“grep -n'[^w]oo"test.txt"命令表示在 test.txt 文本中査找“oo”前面不是“w”的字符串
[root@localhost ~]# grep -n'['w]oo' test.txt
3:The home of Football on BBc Sport online. 5:google is the best tools for searchkeyword, 11:#woood #
12:#ho0o00o0d #
14:I bet this place is really spooky late at night!
在上述命令的执行结果中发现“woood”与"woo0oood"也符合匹配规则,二者均包含“w”。其实通过执行结果就可以看出,符合匹配标准的字符加粗显示,而上还结果中可以得知。“#woood #”中加粗显示的是“o0o”,而“oo”前面的“o”是符合匹配规则的。同理“#woooo0ood #”也符合匹配规则。若不希望“oo”前而存在小写字母,可以使用“grep -n'[^a-z]oo'test.txt”命令实现,其中 a-z”表示小写字母,大写字母则通过“A-2”表示。
[rootglocalhost ~]# erep -n '[^a-z]oo" test.txt
3:The home of Football on BBc sport online.
查找包含数字的行可以通过“grep -n'[0-9]’test.txt”命令来实现。
[rootglocalhost ~]# grep -n '[8-9]" test.txt
4:the tongue is boneless but it breaks bones.12!
7:P1-3.141592653589793238462643383249901429

(3)查找行首“^”与行尾字符“$”

[root@localhost ~]# grep -n '^the' test.txt
4:the tongue is boneless but it breaks bones.12!
查询以小写字母开头的行可以通过“^[a-z]"规则来过滤,查询大写字母开头的行则使用“^[A-Z]“规若查询不以字母开头的行则使用“^[^a-zA-2]”规则。
[rootglocalhost ~]# grep -n '^[a-z]’ test.txt1:he was short and fat, 4:the tongue is boneless but it breaks bones.12!5:google is the best tools for search keyword, 8:a wood cross!
[root@localhost ~]# grep -n'^[A-2]' test.txt2:He was wearing a blue polo shirt with black pants, 3:The home of Football on 88CSport online. 6:The year ahead will test our political establishment to the limit.7:PI-3.1415926535897932384626433832499014299:Actions speak louder than words
13:AxyzxYzxy2xy2C
14:I bet this place is really spooky late at night!
15:Misfortunes never come alone/single. 16:I shouldn't have lett so tast.
[root@localhost ~]# grep -n'^[^a-zA-2]" test.txt
11:#woood #
12:#wo0o00o0d #
[root@localhost ~]# grep -n'.$"test.txt
1:he was short and fat, 2:He was wearing a blue polo shirt with black pants. 3:Thehome of Football on BBc Sport online. 5:google is the best tools for search keyword.6:The year ahead will test our political establishment to the limit. 15:Misfortunesnever come alone/single, 16:I shouldn't have lett so tast.
当查询空白行时,执行“grep -n'ns"test.txt”命令即可,
[root@localhost ~]# grep -n'^g'test.txt106
(4)查找任意一个字符“.”与重新字符“*”
[root@localhost ~]# grep -n 'w..d' test.txt5:google is the best tools for search keyword,8:a wood cross!
9:Actions speak louder than words
12:#wo0o0co0d #
14:I bet this place is really spooky late at night!
[rootglocalhost ~]# grep -n 'ooo*' test.txt3:The home of Football on BBc Sport online. 5:google is the best tools for searchkeyword, 8:a wood cross!
11:#wo00d #
12:#wo0oo0ood #
14:I bet this place is really spooky late at night!
查询以 w 开头 d结尾,中间包含至少一个 o 的字符串,执行以下命令即可实现。[rootglocalhost ~]# grep -n'woo*d" test.txt
8:a wood cross!
11:#woood #
12:#woooo0ood #
执行以下命令即可查询以 w开头 d 结尾,中间的字符可有可无的字符申,
[root@localhost ~]# erep -n 'w.*d' test.txt1:he was short and fat. 5:google is the best tools for search keyword. 8:a wood cross!9:Actions speak louder than words
11:#woood #
12:#wo0oocood #
执行以下命令即可查询任意数字所在行。
[rootglocalhost ~]# grep -n'[8-9][8-9].' test.txt4:the tongue is boneless but it breaks bones.12!
7:PI 3.141592653589793238462643383249901429

(5)查找连续字符范围“{ }”

查询两个0的字符,

[root@localhost ~]# grep -n'o{2}' test.txt
3:The home of football on BBc Sport online. 5:google is the best tools for searchkeyword. 8:a wood cross!
11:#wo0od #
12:#wo0000o0d #
14:I bet this place is really spooky late at night!


查询以 w 开头以 d 结尾,中间包含 2~5 个0的字符串,

[rootglocalhost ~]# grep -n 'wo'{2,5'}d" test.txt
B:a wood cross!
11:#wo0od #


查询以 w 开头以 d 结尾,中间包含 2个或 2 个以上0的字符串。
 

[rootglocalhost ~]# grep n 'woW2,\}d' test.txt
B:a wood cross!
11:#wo0od #
12:#wo000co0d #

元字符总结
字符说明
\将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符;
^

匹配输入字符串的开始位置;

$匹配输入字符串的结束位置;
*匹配前面的子表达式零次或多次;
+匹配前面的子表达式一次或多次;
?匹配前面的子表达式零次或一次;
.

匹配除换行符( \n、\r )之外的任何单个字符;

[a-z]字符范围。匹配指定范围内的任意字符;
{n}

n是一个非负整数,匹配确定的n次;

{n,}

n是一个非负整数,至少匹配n次;

{n,m}

m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次

\d

匹配一个数字字符。等价于【0~9】;

\D

匹配一个非数字字符。等价于【^0~9】;

\s

匹配任何空白字符,包括空格、制表符、换页符等等。等价于【^、\f、\n、\r、\t、\v】;

\S

匹配任何非空白字符。等价于【A~Z、a~z、0~9】;

\w匹配字母、数字、下划线。等价于`【A~Z、a~z、0~9、_】`;
\W匹配非字母、数字、下划线。等价于`【^A~Z、a~z、0~9、_】`;
\n匹配一个换行符
\f匹配一个换页符
\r匹配一个回车符

文本处理器

一、sed工具

   sed工具是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。

   它也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于 shel1 脚本中,用以完成各种自动化处理任务。工作流程主要包括读取、执行和显示三个过程。以下为详细介绍:

  • 读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中。
  • 执行:默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则 sed命令将会在所有的行上依次执行。
  • 显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。

    格式如下: 

sed [选项] `操作` 参数
sed [选项] -f scriptfile 参数

    常见的 sed 命令选项主要包含以下几种:

  • -e或--expression=:表示用指定命令或者脚本来处理输入的文本文件
  • -f 或--file=:表示用指定的脚本文件来处理输入的文本文件。
  • -h或--help:显示帮助。
  • -n、--quiet 或 silent:表示仅显示处理后的结果。
  • -i:直接编辑文本文件。

     常见的操作包括以下几种:

  • a:增加,在当前行下面增加一行指定内容。
  • c:替换,将选定行替换为指定内容。
  • d:删除,删除选定的行。
  • i:插入,在选定行上面插入一行指定内容。
  • P:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非
  • 打印字符,则以 ASCII 码输出。其通常与“-n”选项一起使用。
  • s:替换,替换指定字符。
  • y:字符转换。

(1)输出符合条件的文本(p 表示正常输出)

[root@localhost ~]# sed -n 'p' test.txt
//输出所有内容,等同于 cat test.txt
he was short and fat, He was wearing a blue polo shirt with black pants. The homeof Footbal1on BBc sport online.
.….//省略部分内容
[root@localhost ~]# sed -n'3p' test.txt
//输出第 3 行
The home of Football on BBc Sport online.
[root@localhost ~]# sed -n '3,5p'test.txt//输出 3~5 行
The home of Football on BBc Sport online.the tongue is boneless but it breaks bones.12!google is the best tools for search keyword,
[root@localhost ~]# sed -n 'p;n' test.txt
//输出所有奇数行,n 表示读入下一行资料
he was short and fat, The home of football on BBc Sport online, google is the besttools for search keyword.…//省略部分内容
[root@localhost ~]# sed -n 'n;p' test.txt
//输出所有偶数行,n 表示读入下一行资料
He was wearing a blue polo shirt with black pants.
the tongue is boneless but it breaks bones.12!
The year ahead will test our political establishment to the limit.….//省略部分内容
[root@localhost ~]# sed -n'1,5{p;n}" test.txt//输出第 1~5 行之间的奇数行(第 1、3、 5 行)he was short and fat. The home of Football on BBc sport online, google is the besttools for search keyword.
[root@localhost ~]# sed -n'10,${n;p}' test.txt//输出第 18 行至文件尾之间的偶数行
#woood #
AxyzxуzxуzxyzC
Misfortunes never come alone/single.

(2)删除符合条件的文本

[root@localhost ~]# nl test.txt sed '3d'    //删除第 3 行
1 he was short and fat, 2 He was wearing a blue polo shirt with black pants. 4 thetongue is boneless but it breaks bones.12!
5 google is the best tools for search keyword. 6 The year ahead will test our politicalestablishment to the limit.…
//省略部分内容 
[root@localhost ~]# nl test.txt |sed '3,5d'
//删除第 3~5 行
1 he was short and fat, 2 He was wearing a blue polo shirt with black pants. 6 Theahead will test our politicalestablishment to the limit.yearPI 3.141592653589793238462643383249901429
8 a wood cross!...
//省略部分内容
[root@localhost ~]# nl test.txt sed '/cross/d'//删除包含 cross 的行,原本的第 8 行被删除;如果要删除不包含 cross 的行,用!符号表示取反操作,如'/cross/!d’…
//省略部分内容
7 PI-3.141592653589793238462643383249901429
9 Actions speak louder than words .
//省略部分内容
[root@localhost ~]# sed "/^[a-z]/d' test.txt
//删除以小写字母开头的行
He was wearing a blue polo shirt with black pants, The home of football on BBc Sportonline, The year ahead will test our political establishment to the limit.P-3.141592653589793238462643383249901429
Actions speak louder than words
#woood #
#w000o0ood #
Axyzxyzxyzxy2C
I bet this place is really spooky late at night!
Misfortunes never come alone/single.
I shouldn't have lett so tast.
[root@localhost ~]# sed "/\.$/d' test.txt
//删除以"."结尾的行
the tongue is boneless but it breaks bones.12!PI=3.141592653589793238462643383249901429
a wood cross!
Actions speak louder than words
#woood #
#wocoo0ood 并
AxyzxyzxyzxyzC
I bet this place is really spooky late at night!
[root@localhost ~]# sed "/^$/d' test.txt
//删除所有空行
he was short and fat, He was wearing a blue polo shirt with black pants. The homeof Football on BBc sport online.
the tongue is boneless but it breaks bones.12!google is the best tools for search keyword, The year ahead will test our politicalestablishment to the limit. p 3.141592653589793238462643383249901429
a wood cross!
Actions speak louder than words
#woood 并
#W000000od #
Axyzxyzxyzxy2C
I bet this place is really spooky late at night!
Misfortunes never come alone/single.
I shouldn't have lett so tast.

 (3)替换符合条件的文本

在使用 sed 命令进行替换操作时需要用到 s(字符申替换)、c(整行/整块营换)、y(字符转换)命令选项,常见的用法如下所示。
sed 's/the/THE/" test.txt
//将每行中的第一个 the 替换为 THE
sed 's/l/L/2'test.txt
//将绿行中的第 2 个 1 替换为L
sed 's/the/THE/g  test.txt
//将文件中的所有 the 普换为 THE
sed 's/o/'g' test.txt
//将文件中的所有 o 删除(替换为空申)
sed 's/^/#/' test.txt
//在绿行行首插入#号
sed '/the/s/^/#/' test.txt
//在包含 the 的每行行首插入#号
sed 's/$/E0F/" test.txt
//在每行行尾插入字符申EOF
sed '3,5s/the/THE/e' test.txt
//将第 3~5 行中的所有 the 替换为 THE
郑州课
sed '/the/s/o/o/g  test.txt
//将包含 the 的所有行中的 。 都普换为 0

(4)迁移符合条件的文本

在使用 sed 命令迁移符合条件的文本时,常用到以下参数:
> H:女制到剪贴板;
g、G:将剪贴板中的数据覆盖/追加至指定行:
w:保存为文件;
>r:读取指定文件;
a:追加指定内容。。
具体操作方法如下所示。
关
sed '/the/(H;d};$6' test.txt
//将包含 the 的行迁移至文件末尾,{;}用于多个操作
sed '1,5(H;d};176' test.txt
//将第 1~5 行内容转移至第 17 行后
sed '/the/w out.file" test.txt
//将包含 the 的行另存为文件 out.file
sed '/the'r /etc/hostname" test.txt
//将文件/etc/hostname 的内容添加到包含 the 的行以后
sed '3aNew" test.txt
//在第 3 行后插入一个新行,内容为 New
sed '/the/aNew' test.txt
//在包含 the 的每行后插入一个新行,内容为 Wew
sed '3aNewl\nNew2' test.txt
//在第 3 行后插入多行内容,中间的\n 表示换行

二、awk工具

    awk 是一种强大的‌文本处理工具‌,尤其适合处理结构化数据(如日志、CSV文件)。它不仅是命令行工具,还是一种编程语言,能够高效完成数据提取、统计、格式化输出等任务。通常情况下awk所使用的命令格式如下所示:

awk 选项 `模式或条件 {编辑命令}` 文件1 文件2 ...    //过滤并输出文件中符合条件的内容
awk -f 脚本文件 文件1 文件2 ...    //从脚本中调用编辑指令,过滤并输出内容

     其中,单引号加上大括号“{ }”用于设置对数据进行的处理动作。awk可以直接处理目标文件,也可以通过“ -f ”读取脚本对目标脚本进行处理。

特殊的内建变量(可直接使用),如下:

  • FS:指定每行文本的字段分隔符,默认为空格或制表位;
  • NF:当前处理的行的字段个数;
  • NR:当前处理的行的行数(序数);
  • $0:当前处理的行的整行的内容;
  • $n:当前处理的第n个字段(第n列);
  • FILENAME:被处理的文件名;
  • RS:数据记录分隔,默认为\n,即每行为一条记录。

    相对于sed命令,awk则倾向于将一行分成多个“字段” 然后再进行处理,且默认情况下字段的分隔符为空格或Tab键。而且其执行结果也可通过print的功能将字段数据打印显示。在使用awk命令的过程中,可以也使用逻辑操作符“&&”表示“与”、“ || ”表示“或”、“ !”表示“非”。范例如下:

[root@localhost ~]#awk -F ':' `{print $1,$3,$4}` /etc/passwd
root 0 0
bin 1 1
daemon 2 2
...    ...        //省略部分内容

    处理逻辑过程如下:

 用法示例:

(1)按行输出文本

按行输出文本
awk '{print}' test.txt
//输出所有内容,等同于 cat test.txt
awk '{print $o}' test.txt
//输出所有内容,等同于 cat test.txt
awk 'NR==1,NR==3fprint}' test.txt
//输出第 1~3 行内容
awk (NR>=1)&&(NR<=3){print}' test.txt//输出第 1~3 行内容
awk 'NR==1/|NR==3{print}" test.txt//输出第 1 行、第 3 行内容
awk "(NR%2)==1{print}'test.txt
//输出所有奇数行的内容
awk "(NR%2)==0{print}' test.txt
//输出所有偶数行的内容
awk "/^root/{print}'/etc/passwd
//输出以 root 开头的行

awk 'BEGIN {x=0};/\/bin\/bash$/{x++};END {print x}' /etc/passwd

//统计以/bin/bash 结尾的行数,等同于 grep-c"/bin/bash$"/etc/passwd
awk BEGIN{RS=""};END{print NR}" /etc/squid/squid.conf

//统计以空行分隔的文本段落数

(2)按字段输出文本

awk '{print $3}' test.txt
//输出每行中(以空格或制表位分隔)的第 3 个字段
awk '{print $1,$3}'test.txt
//输出每行中的第 1、3 个字段
awk -F ":"'$2==""{print}'/etc/shadow//输出密码为空的用户的 shadow 记录
aWk 'BEGIN {FS=":"};$2==""{print}' /etc/shadow//输出密码为空的用户的 shadow 记录
awk -F":"'$7~"/bash"{print $1}" /etc/passwd//输出以冒号分隔且第 7个字段中包含/bash 的行的第 1 个字段
awk '($1~"nfs")&&(NF==8){print $1,$2}' /etc/services//输出包含 8 个字段且第 1 个字段中包含 nfs 的行的第 1、2 个字段
awk -F":"'($7!="/bin/bash")&&($7!="/sbin/nologin"){print}' /etc/passwd//输出第7个字段既不为/bin/bash 也不为/sbin/nologin 的所有行 

(3)通过管道、双引号调用 she11 命令

awk -F:'/bash$/{print|"wc -l"}'/etc/passwd//调用 wc -1 命令统计使用 bash 的用户个数,等同于 grep -c"bash$"/etc/passwd
awk "BEGIN {while("w"|getline)n++ ;{print n-2}}//调用 w命令,并用来统计在线用户数
awk 'BEGIN("hostname"getline ; print $0}//调用 hostname,并输出当前的主机名

相关文章:

Linux——Shell编程之正则表达式与文本处理器(笔记)

目录 基础正则表达式 1:基础正则表达式示例 &#xff08;4&#xff09;查找任意一个字符“.”与重新字符“*” &#xff08;5&#xff09;查找连续字符范围“{ }” 文本处理器 一、sed工具 二、awk工具 &#xff08;1&#xff09;按行输出文本 &#xff08;2&#xff0…...

关于k8s的部署

一、实验目的 1、理解k8s的组件的功能&#xff1b; 2、理解k8s中的资源类型&#xff1b; 3、 熟练掌握k8s部署配置&#xff1b; 二、实验内容&#xff1a; 前置知识点&#xff1a; 写出k8s有哪些组件并简述作用&#xff1f; ①Master 组件&#xff1a; Master 组件提供集…...

营销自动化实战指南:如何用全渠道工作流引爆线索转化率?

在数字化浪潮席卷全球的今天&#xff0c;企业争夺用户注意力的战场已从单一渠道转向全渠道。然而&#xff0c;面对海量线索&#xff0c;许多团队依然深陷效率泥潭&#xff1a;人工处理耗时费力、高价值线索流失、跨渠道数据难以整合……如何破局&#xff1f;营销自动化正成为企…...

利用Global.asax在ASP.NET Web应用中实现功能

Global.asax文件&#xff08;也称为ASP.NET应用程序文件&#xff09;是ASP.NET Web应用程序中的一个重要文件&#xff0c;它允许您处理应用程序级别和会话级别的事件。下面介绍如何利用Global.asax来实现各种功能。 Global.asax基本结构 <% Application Language"C#&…...

【Linux 并发与竞争实验】

【Linux 并发与竞争实验】 之前学习了四种常用的处理并发和竞争的机制&#xff1a;原子操作、自旋锁、信号量和互斥体。本章我们就通过四个实验来学习如何在驱动中使用这四种机制。 文章目录 【Linux 并发与竞争实验】1.原子操作实验1.1 实验程序编写1.2 运行测试 2.自旋锁实验…...

数据一致性策略之延迟双删-实现

延迟双删 查询数据之前优先去查Redis的缓存数据&#xff0c;减少数据库压力&#xff1b; 如果没有缓存会去查数据库&#xff0c;通过查询数据库后缓存热点Key Cache-Aside策略 高并发场景时&#xff0c;严重生产bug&#xff1a;数据不一致 业务场景&#xff1a; 事务1&#x…...

在PyTorch中,使用不同模型的参数进行模型预热

在PyTorch中&#xff0c;使用不同模型的参数进行模型预热&#xff08;Warmstarting&#xff09;是一种常见的迁移学习和加速训练的策略。以下是结合多个参考资料总结的实现方法和注意事项&#xff1a; 1. 核心机制&#xff1a;load_state_dict()与strict参数 • 部分参数加载&…...

【AI论文】InternVL3:探索开源多模态模型的高级训练和测试时间配方

摘要&#xff1a;我们推出了InternVL3&#xff0c;这是InternVL系列的一项重大进步&#xff0c;具有本地多模态预训练范式。 InternVL3不是将纯文本的大型语言模型&#xff08;LLM&#xff09;改编成支持视觉输入的多模态大型语言模型&#xff08;MLLM&#xff09;&#xff0c;…...

基于Linux的ffmpeg python的关键帧抽取

1.FFmpeg的环境配置 首先强调&#xff0c;ffmpeg-python包与ffmpeg包不一样。 1) 创建一个虚拟环境env conda create -n yourenv python3.x conda activate yourenv2) ffmpeg-python包的安装 pip install ffmpeg-python3) 安装系统级别的 FFmpeg 工具 虽然安装了 ffmpeg-p…...

CNN:卷积到底做了什么?

卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09; 是一种深度学习模型&#xff0c;专门用于处理具有网格结构的数据&#xff08;如图像、视频等&#xff09;。它在计算机视觉领域表现卓越&#xff0c;广泛应用于图像分类、目标检测、图像分割等任务。CN…...

C++ IO流

文章目录 C IO流流是什么C标准IO流C文件IO流c字符串流 C IO流 流是什么 在 C 中&#xff0c;“流&#xff08;Stream&#xff09;” 是一种 抽象的数据传输机制&#xff0c;它通过统一的接口实现了程序与各种输入/输出设备&#xff08;如键盘、屏幕、文件、内存等&#xff09…...

解决splice改变原数组的BUG(拷贝数据)

项目场景&#xff1a; 项目中难免遇到需要删除改变数组的方法&#xff0c;去重&#xff0c;删除不要的数据等 问题描述&#xff1a; 但是splice方法会删除掉数据改变原数组&#xff0c;返回的是改变之后的数组&#xff0c;即使你是赋值的还是会影响到原数组的数据 GoodsInfo…...

ARINC818协议(二)

ARINC818对图像数据进行帧分割 1.FC协议定了5层模型结构&#xff1a;FC-4;FC-3;FC-2;FC-1;FC-0; 2.ARINC818协议位于FC-4层&#xff1b; 3.ARINC818协议在FC-4层使用FHCP帧头控制协议进行实现数据传递&#xff1b; 4.协议中有容器&#xff0c;容器头&#xff0c;object0~object…...

【Netty篇】Future Promise 详解

目录 一、 Netty Future 与 Promise —— 异步世界的“信使”与“传话筒”&#x1f680;1、 理解 Netty Future2、 理解 Netty Promise 二、 代码案例解读&#x1f4bb;例1&#xff1a;同步处理任务成功&#x1f44d;例2&#xff1a;异步处理任务成功&#x1f4f2;例3&#xff…...

【LaTeX】Misplaced alignment tab character . ^^I

目录 公式中出现Misplaced alignment tab character &. ^^I& 解决1&#xff1a;采用&& 解决2&#xff1a; 公式中出现Misplaced alignment tab character &. ^^I& \begin{equation}J_r & \dfrac{i\hbar}{2m}\left[\psi_2 \dfrac{\partial \psi^…...

数据中台(大数据平台)之元数据管理

&#x1f449;元数据管理是数据管理的基础&#xff0c;数据中台产品要能够提供各类元数据采集的适配器&#xff0c;自动化采集技术元数据&#xff0c;并在技术元数据的基础上补充管理属性和业务属性&#xff0c;为后续的数据资源目录、数据安全管控、报表开发提供统一的口径。并…...

基于RRT的优化器:一种基于快速探索随机树算法的新型元启发式算法

受机器人路径规划中常用的快速探索随机树&#xff08;RRT&#xff09;算法的搜索机制的启发&#xff0c;我们提出了一种新颖的元启发式算法&#xff0c;称为基于RRT的优化器&#xff08;RRTO&#xff09;。这是首次将RRT算法的概念与元启发式算法相结合。RRTO的关键创新是其三种…...

设计模式每日硬核训练 Day 13:桥接模式(Bridge Pattern)完整讲解与实战应用

&#x1f504; 回顾 Day 12&#xff1a;装饰器模式小结 在 Day 12 中&#xff0c;我们学习了装饰器模式&#xff08;Decorator Pattern&#xff09;&#xff1a; 强调在不改变原类结构的前提下&#xff0c;动态为对象增强功能。通过“包装对象”实现运行时组合&#xff0c;支…...

【开发语言】悬空指针问题

悬空指针&#xff08;Dangling Pointer&#xff09;是编程中常见的内存管理问题&#xff0c;尤其在C/C这类手动管理内存的语言中。以下是详细解释&#xff1a; 什么是悬空指针&#xff1f; 悬空指针是指向已经被释放&#xff08;或失效&#xff09;内存的指针。这段内存可能已…...

深入剖析 WiFi 定位解析功能:原理、技术优势与应用场景

WiFi 定位解析功能的原理​ 信号强度与距离的关系​ WiFi 定位的核心原理基于无线信号传播过程中的一个基本特性&#xff1a;信号强度与信号发射源&#xff08;即 WiFi 接入点&#xff0c;Access Point&#xff0c;简称 AP&#xff09;和接收设备之间距离的关联。一般来说&am…...

从标准九九表打印解读单行表达式的书写修炼(Python)

解读单行表达式书写&#xff0c;了解修习单行捷径。 笔记模板由python脚本于2025-04-16 23:24:17创建&#xff0c;本篇笔记适合喜欢单行喜好python的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述…...

HTML5好看的水果蔬菜在线商城网站源码系列模板4

文章目录 1.设计来源1.1 主界面1.2 关于我们1.3 商品信息1.4 新闻资讯1.5 联系我们1.5 登录注册 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/147264262 HTML5好看的水果…...

Arkts应用全局UI状态存储和持久化V2(AppStorageV2、PersistenceV2和@Type)

目录 应用全局UI状态存储和持久化V2版本 AppStorageV2 connect remove keys 示例 使用限制 PersistenceV2 connect remove keys save notifyOnError 示例 使用限制 Type 使用限制 应用全局UI状态存储和持久化V2版本 以下实例AppStorageV2、PersistenceV2和装饰…...

【QT】常用控件 【多元素类 | 容器类 | 布局类】

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Qt 目录 一&#xff1a;&#x1f525; QT 常用控件【多元素类】 &#x1f98b; List Widget -- 列表&#x1f98b; Table Widget -- 表格&#x1f98b; Tree Widget -- 树形 二&#xff1a;&#x…...

uniapp实现图文聊天功能

Uniapp 实现图文聊天功能 下面我将介绍如何在 Uniapp 中实现一个基本的图文聊天功能&#xff0c;包括消息发送、接收和展示。 一、准备工作 创建 Uniapp 项目准备后端接口&#xff08;可以使用云开发、自己的服务器或第三方服务&#xff09; 二、实现步骤 1. 页面结构 &l…...

【场景应用9】多语言预训练语音模型进行自动语音识别

一、理论介绍 “多语言预训练语音模型进行自动语音识别”这个模块是近年来语音识别(ASR, Automatic Speech Recognition)领域非常重要的发展方向。下面我来为你系统地讲解这个模块的基础理论与算法流程,尤其聚焦在如 wav2vec 2.0 multilingual、XLSR(cross-lingual speech…...

华为HCIE-openEuler认证:能否成为国产操作系统领域的技术稀缺人才?

HCIE-openEuler是华为面向开源操作系统领域的高级专家认证&#xff0c;聚焦openEuler系统的深度运维、性能调优与生态集成。作为华为鲲鹏计算生态的核心技术栈&#xff0c;该认证要求持证者具备从底层内核优化到上层云原生适配的全栈能力。以下从技术能力、实验设计、行业适配三…...

Uniapp:列表选择提示框

目录 一、出现场景二、效果展示三、具体使用 一、出现场景 在项目的开发过程中&#xff0c;有这样一种场景&#xff0c;就是点击按钮走后续的逻辑之前还需要选择前提条件&#xff0c;就一个条件的情况下如果使用弹出框就显示比较多余&#xff0c;列表选择提示框刚好能够满足我…...

uni-app 开发安卓 您的应用在运行时,向用户索取(定位、相机、存储)等权限,未同步告知权限申请的使用目的,不符合相关法律法规要求

您的应用在运行时,向用户索取(定位、相机、存储)等权限,未同步告知权限申请的使用目的,不符合相关法律法规要求。 测试步骤:1、 工作台 -打卡,申请定位权限;2、工作台-设置-编辑资料-更换头像,申请相机、存 储权限。 修改建议:APP在申请敏感权限时,应同步说明权限申…...

李宏毅NLP-4-语音识别part3-CTC

Connectionist Temporal Classification&#xff5c;CTC 基于连接主义时间分类&#xff08;CTC&#xff09;的语音识别架构&#xff0c;具体描述如下&#xff1a; 输入层&#xff1a;底部的 x 1 , x 2 , x 3 , x 4 x^1, x^2, x^3, x^4 x1,x2,x3,x4代表输入的语音信号分帧数据…...

基于.NET后端实现图片搜索图片库 核心是计算上传图片与库中图片的特征向量相似度并排序展示结果

基于.NET 后端实现图片搜索图片库的方案&#xff0c;核心是计算上传图片与库中图片的特征向量相似度并排序展示结果。 整体思路 图像特征提取&#xff1a;使用深度学习模型&#xff08;如 ResNet&#xff09;提取图片的特征向量。特征向量存储&#xff1a;将图片的特征向量存…...

数据中台(大数据平台)之数据仓库建设

数据中台作为企业数据管理的核心枢纽&#xff0c;应支持并促进企业级数据仓库的建设&#xff0c;确保数据的有效整合、治理和高效应用。在建设数据仓库的过程中&#xff0c;设计和规划显得尤为重要&#xff0c;需要深入理解业务需求&#xff0c;制定合理的技术架构&#xff0c;…...

设计模式之工厂模式(factory pattern):在商品对象创建系统中的应用

目录 一、设计思路 1. 简单工厂模式 2. 工厂方法模式 3. 抽象工厂模式 二、UML类图&#xff08;PlantUML格式&#xff09; 1.简单工厂模式 2.工厂方法模式 3.抽象工厂模式 三、实现过程与结果 1. 简单工厂模式 2. 工厂方法模式 3. 抽象工厂模式 四、总结 在面向对…...

在ubuntu20.04+系统部署VUE及Django项目的过程记录——以腾讯云为例

目录 1. 需求2. 项目准备3. VUE CLI项目部署3.1 部署前的准备3.1.1 后端通信路由修改3.1.2 导航修改 3.2 构建项目3.3 配置nginx代理 4. 后端配置4.1 其他依赖项4.2 单次执行测试4.3 创建Systemd 服务文件4.4 配置 Nginx 作为反向代理 5. 其他注意事项 1. 需求 近期做一些简单…...

解决前端vue项目在linux上,npm install,node-sass 安装失败的问题

Unable to save binary /var/lib/jenkins/workspace/xxx/node_modules/node-sass/vendor/linux-x64-72 : Error: EACCES: permission denied, mkdir ‘/var/lib/jenkins/workspace/x/node_modules/node-sass/vendor’ 这个是node-sass安装失败导致的。 #将npm的默认仓库更改为…...

FPGA_YOLO(四)用HLS实现循环展开以及存储模块

Vivado HLS&#xff08;High-Level Synthesis&#xff0c;高层次综合&#xff09;是赛灵思&#xff08;Xilinx&#xff09;在其 Vivado 设计套件 中提供的一款工具&#xff0c;用于将 高级编程语言&#xff08;如 C、C、SystemC&#xff09; 直接转换为 硬件描述语言&#xff0…...

用户组与用户

用户组管理&#xff1a; 创建用户组&#xff1a; groupadd 用户组名 删除用户组&#xff1a; groupdel 用户组名 用户管理&#xff1a; 创建用户 useradd [-g -d] 用户名 -g&#xff1a;指定用户的组 -d&#xff1a;指定用户的home路径&#xff0c;如果不加上&…...

npm install 报错常见的解决方法

npm install 报错的情况有很多种&#xff0c;每种错误的具体解决方案也有所不同。这里我将汇总一些常见的npm install报错及其解决办法&#xff1a; 1. 下载速度慢/网络问题 解决办法&#xff1a;更换npm包的镜像源至国内镜像&#xff0c;如淘宝npm镜像&#xff1a;npm confi…...

暂存一下等会写

#include<easyx.h> IMAGE SNOW 图形变量 struct MOVE生存结构体 {int x0;int y0; bool livefalse;}; initgraph(800, 800);初始化图形界面 MOVE snowflake[5000];目标数量 loadimage(&SNOW, "snow.png");加载图片 BeginBatchDraw(); 开始批量绘图。…...

C语言 —— 指尖跃迁 刻印永恒 - 文件操作

目录 1. 什么是文件 1.1 程序文件 1.2 数据文件 1.3 文件名 2. 二进制文件和文本文件 3. 文件的打开与关闭 3.1 流和标准流 3.2 文件指针 3.3 文件的打开与关闭 fopen fclose 4. 文件的顺序读写 4.1 fgetc和fputc fgetc fputc 4.2 fgets和fputs fgets fputs…...

第二章 DQL查询语句

第一章&#xff1a;基础查询 一、SELECT 语句 作用 SELECT 语句用于从数据库中选取数据。 结果被存储在一个结果表中&#xff0c;称为结果集。 语法 SELECT column1, column2, … FROM table_name; 与 SELECT * FROM table_name; 参数说明&#xff1a; column1, column2, …...

系统与网络安全------弹性交换网络(1)

资料整理于网络资料、书本资料、AI&#xff0c;仅供个人学习参考。 Trunk原理与配置 Trunk原理概述 Trunk&#xff08;虚拟局域网中继技术&#xff09;是指能让连接在不同交换机上的相同VLAN中的主机互通。 VLAN内通信 实现跨交换的同VLAN通信&#xff0c;通过Trunk链路&am…...

有哪些哲学流派适合创业二

好的&#xff0c;让我们更深入地探讨如何将‌哲学与数学‌深度融合&#xff0c;构建一套可落地的创业操作系统。以下从‌认知框架、决策引擎、执行算法‌三个维度展开&#xff0c;包含具体工具和黑箱拆解&#xff1a; ‌一、认知框架&#xff1a;用哲学重构商业本质‌ 1. ‌本体…...

Python(18)Python中JSON的妙用:详解序列化与反序列化原理及实战案例

目录 一、背景&#xff1a;为什么Python需要JSON&#xff1f;二、核心技术解析&#xff1a;序列化与反序列化2.1 核心概念2.2 类型映射对照表 三、Python操作JSON的四大核心方法3.1 基础方法库3.2 方法详解1. json.dumps()2. json.loads()3. json.dump()4. json.load() 四、实战…...

Nautilus 正式发布:为 Sui 带来可验证的链下隐私计算

作为 Sui 安全工具包中的强大新成员&#xff0c;Nautilus 现已上线 Sui 测试网。它专为 Web3 开发者打造&#xff0c;支持保密且可验证的链下计算。Nautilus 应用运行于开发者自主管理的可信执行环境&#xff08;Trusted Execution Environment&#xff0c;TEE&#xff09;中&a…...

投资理财_从0到1:如何用1000元开启你的二级市场投资之旅?

投资理财_从0到1&#xff1a;如何用1000元开启你的二级市场投资之旅&#xff1f; 一、前言&#xff1a;投资不是赌博&#xff0c;而是科学与艺术的结合1.1 为什么学习二级市场投资&#xff1f;1.2 本篇博客的目标 二、投资的基本概念&#xff1a;先搞清楚“玩的是什么”2.1 二级…...

有没有适合企业用的局域网即时通讯聊天工具?

随着信息安全问题的日益凸显&#xff0c;用户对于即时通讯工具的安全性与隐私保护提出了更高的要求。 强大的即时通讯能力 BeeWorks提供了专业的IM即时通讯能力&#xff0c;支持多种消息类型&#xff0c;包括文字、语音、图片和文件等&#xff0c;满足不同场景下的沟通需求。…...

Web3技术如何提升用户数据保护

在这个信息爆炸的时代&#xff0c;用户数据保护已成为全球关注的焦点。Web3 技术&#xff0c;作为下一代互联网的代表&#xff0c;以其去中心化、安全性和用户主权等特点&#xff0c;为用户数据保护提供了新的解决方案。本文将探讨 Web3 技术如何提升用户数据保护。 去中心化存…...

CANoe自动化测试用例log保存(专栏:车载网络诊断测试攻略从零开始搭建一个UDS诊断自动化测试CANoe工程)

文章目录 前言实现思路以及对应的CAPL代码1.获取cfg工程路径2.获取系统时间3.html报告路径4.log路径5.保存报告6.用例示例在汽车电子系统的开发与测试中,CANoe作为主流的仿真测试工具,其自动化测试用例生成的Log是问题追溯、合规审计和数据分析的核心依据。然而,许多团队因日…...

理解 results = model(source, stream=True) 的工作原理和优势

1. 核心概念解析 (1) streamTrue 的作用 生成器模式&#xff1a;当处理视频或图像序列时&#xff0c;streamTrue 会将结果包装成一个 生成器&#xff08;Generator&#xff09;&#xff0c;逐帧生成 Results 对象&#xff0c;而不是一次性返回所有结果。内存优化&#xff1a;…...