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

shell文本处理工具-shell三剑客1

shell脚本常用基础命令2


shell脚本常用基础命令

  • shell脚本常用基础命令2
  • 一、grep用法
  • 二、sed用法
    • 2.1p参数 (显示)n参数(只显示处理过的行)


文本处理三剑客:grep sed awk

一、grep用法

grep -E = egrep (扩展搜索正文表达式)
grep格式
grep 匹配条件 处理文件(很多正文表达式用不了) |表示或者

[root@docker3 mnt]# grep "bash|root" passwd 
[root@docker3 mnt]# egrep "bash|root" passwd 
root:x:0:0:root:/root:/bin/bash
test:root:test
operator:x:11:0:operator:/root:/sbin/nologin
yan:x:1000:1000::/home/yan:/bin/bash
[root@docker3 mnt]# grep -E "bash|root" passwd 
root:x:0:0:root:/root:/bin/bash
test:root:test
operator:x:11:0:operator:/root:/sbin/nologin
yan:x:1000:1000::/home/yan:/bin/bash
[root@docker3 mnt]# grep -e bash -e root passwd 
root:x:0:0:root:/root:/bin/bash
test:root:test
operator:x:11:0:operator:/root:/sbin/nologin
yan:x:1000:1000::/home/yan:/bin/bash

grep开启的是贪婪模式,要是不匹配前面的<,不匹配后面>

[root@docker3 mnt]# grep -E "root" passwd 
root:x:0:0:root:/root:/bin/bash
test:root:test
chroot
rootch
[root@docker3 mnt]# grep -E "\<root" passwd 
root:x:0:0:root:/root:/bin/bash
test:root:test
rootch
operator:x:11:0:operator:/root:/sbin/nologin
[root@docker3 mnt]# grep -E "\<root\>" passwd 
root:x:0:0:root:/root:/bin/bash
test:root:test
operator:x:11:0:operator:/root:/sbin/nologin

grep 前面加数字,表示该关键字前面后面几行都显示出来

[root@docker3 mnt]# grep chroot passwd 
chroot
[root@docker3 mnt]# grep -2 chroot passwd 
test:root:test
TEST:ROOT:TEST
chroot
rootch
operator:x:11:0:operator:/root:/sbin/nologin
[root@docker3 mnt]# grep -A2 chroot passwd 
chroot
rootch
operator:x:11:0:operator:/root:/sbin/nologin
[root@docker3 mnt]# grep -B2 chroot passwd 
test:root:test
TEST:ROOT:TEST
chroot

显示匹配的在第几行

[root@docker3 mnt]# grep -n chroot passwd 
12:chroot

反向过滤,除了chroot其它行都过滤出来,展示部分。

[root@docker3 mnt]# grep -v chroot passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
yan:x:1000:1000::/home/yan:/bin/bash

以^…开头,…¥以…结尾

[root@docker3 mnt]# grep -E "^root" passwd 
root:x:0:0:root:/root:/bin/bash
rootch
[root@docker3 mnt]# grep -E "bash$" passwd 
root:x:0:0:root:/root:/bin/bash
yan:x:1000:1000::/home/yan:/bin/bash
[root@docker3 mnt]# grep -E "ws" yan
ws
[root@docker3 mnt]# grep -E "w.s" yan
was
[root@docker3 mnt]# grep -E "w...s" yan
waaas
[root@docker3 mnt]# grep -E "w.*s" yan
ws
was
waaas
waaaas
waaaaas
wabababs
[root@docker3 mnt]# grep -E "w.?s" yan
ws
was
[root@docker3 mnt]# grep -E "w.+s" yan
was
waaas
waaaas
waaaaas
wabababs
[root@docker3 mnt]# grep -E "w.{3}s" yan
waaas
[root@docker3 mnt]# grep -E "w.{2,3}s" yan
waaas
[root@docker3 mnt]# grep -E "w.{,3}s" yan
ws
was
waaas
[root@docker3 mnt]# grep -E "w.{3,}s" yan
waaas
waaaas
waaaaas
wabababs
[root@docker3 mnt]# grep -E "wab{1,}s" yan
[root@docker3 mnt]# grep -E "w(ab){1,}s" yan
wabababs

脚本
请显示系统中能被su命令切换的用户名称
在这里插入图片描述

[root@docker3 mnt]# sh user_check.sh 
root
yan

二、sed用法

用来对文本的内容进行处理,修改的是模式空间(内存),真实的(磁盘中)
sed 参数 命令 处理对象
sed 参数 处理对象 -f 处理规则文件

对字符的处理
p 显示
d 删除
a 添加
n 取消默认输出,sed默认会输出所有文本内容,使用-n参数后只显示处理过的行
i 插入,直接修改文件内容
c 替换
w 写入
r 整合文件

2.1p参数 (显示)n参数(只显示处理过的行)

[root@docker3 mnt]# sed -n 5p passwd 
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@docker3 mnt]# vim rule
[root@docker3 mnt]# cat rule 
5p
[root@docker3 mnt]# sed -n -f rule passwd 
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@docker3 mnt]# sed  '5p' fstab 
1
#2
# /etc/fstab3
# Created by anaconda on Sun Mar 28 10:44:35 2021 4
#5
#5
# Accessible filesystems, by reference, are maintained under '/dev/disk'6
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info7
#8
/dev/mapper/rhel-root   /                       xfs     defaults        0 09
UUID=cf9ffcaf-d595-4545-9fd9-3573d573976e /boot  xfs  defaults        0 010
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011
[root@docker3 mnt]# sed  -n '5p' fstab 
#5
[root@docker3 mnt]# sed  -n '3,5p' fstab 
# /etc/fstab3
# Created by anaconda on Sun Mar 28 10:44:35 2021 4
#5
[root@docker3 mnt]# sed  -n '3p;5p' fstab 
# /etc/fstab3
#5

#开头的行以及不是#开头的行

[root@docker3 mnt]# sed -n '/^#/p' fstab 
#2
# /etc/fstab3
# Created by anaconda on Sun Mar 28 10:44:35 2021 4
#5
# Accessible filesystems, by reference, are maintained under '/dev/disk'6
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info7
#8
[root@docker3 mnt]# sed -n '/^#/!p' fstab 
1
/dev/mapper/rhel-root   /                       xfs     defaults        0 09
UUID=cf9ffcaf-d595-4545-9fd9-3573d573976e /boot  xfs  defaults        0 010
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011

^$空行

[root@docker3 mnt]# sed -n '/^#/!p' fstab | sed -n '/^$/!p'
1
/dev/mapper/rhel-root   /                       xfs     defaults        0 09
UUID=cf9ffcaf-d595-4545-9fd9-3573d573976e /boot  xfs  defaults        0 010
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011

最后一行$p

[root@docker3 mnt]# sed -n '$p' fstab
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011
[root@docker3 mnt]# sed -n '5,$p' fstab
#5
# Accessible filesystems, by reference, are maintained under '/dev/disk'6
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info7
#8
/dev/mapper/rhel-root   /                       xfs     defaults        0 09
UUID=cf9ffcaf-d595-4545-9fd9-3573d573976e /boot  xfs  defaults        0 010
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011

显示行号,‘=’, '$='最后一行的行号(可以统计文件有多少行)

[root@docker3 mnt]# sed -n '$=' fstab 
11
[root@docker3 mnt]# sed -n -e '3p' -e '5p' fstab 
# /etc/fstab3
#5

d参数删除

[root@docker3 mnt]# sed 5d fstab 
1
#2
# /etc/fstab3
# Created by anaconda on Sun Mar 28 10:44:35 2021 4
# Accessible filesystems, by reference, are maintained under '/dev/disk'6
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info7
#8
/dev/mapper/rhel-root   /                       xfs     defaults        0 09
UUID=cf9ffcaf-d595-4545-9fd9-3573d573976e /boot  xfs  defaults        0 010
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011
[root@docker3 mnt]# sed '3,5d' fstab 
1
#2
# Accessible filesystems, by reference, are maintained under '/dev/disk'6
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info7
#8
/dev/mapper/rhel-root   /                       xfs     defaults        0 09
UUID=cf9ffcaf-d595-4545-9fd9-3573d573976e /boot  xfs  defaults        0 010
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011
[root@docker3 mnt]# sed '3d;5d' fstab 
1
#2
# Created by anaconda on Sun Mar 28 10:44:35 2021 4
# Accessible filesystems, by reference, are maintained under '/dev/disk'6
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info7
#8
/dev/mapper/rhel-root   /                       xfs     defaults        0 09
UUID=cf9ffcaf-d595-4545-9fd9-3573d573976e /boot  xfs  defaults        0 010
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011
[root@docker3 mnt]# sed '/^#/d' fstab 
1
/dev/mapper/rhel-root   /                       xfs     defaults        0 09
UUID=cf9ffcaf-d595-4545-9fd9-3573d573976e /boot  xfs  defaults        0 010
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011

a参数添加

[root@docker3 mnt]# sed '/^#/ahello' fstab 
1
#2
hello
# /etc/fstab3
hello
# Created by anaconda on Sun Mar 28 10:44:35 2021 4
hello
#5
hello
# Accessible filesystems, by reference, are maintained under '/dev/disk'6
hello
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info7
hello
#8
hello
/dev/mapper/rhel-root   /                       xfs     defaults        0 09
UUID=cf9ffcaf-d595-4545-9fd9-3573d573976e /boot  xfs  defaults        0 010
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011

最后一行后面添加

[root@docker3 mnt]# sed '$ahello' fstab 
1
#2
# /etc/fstab3
# Created by anaconda on Sun Mar 28 10:44:35 2021 4
#5
# Accessible filesystems, by reference, are maintained under '/dev/disk'6
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info7
#8
/dev/mapper/rhel-root   /                       xfs     defaults        0 09
UUID=cf9ffcaf-d595-4545-9fd9-3573d573976e /boot  xfs  defaults        0 010
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011
hello
[root@docker3 mnt]# sed '$ahello\nyan' fstab 
1
#2
# /etc/fstab3
# Created by anaconda on Sun Mar 28 10:44:35 2021 4
#5
# Accessible filesystems, by reference, are maintained under '/dev/disk'6
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info7
#8
/dev/mapper/rhel-root   /                       xfs     defaults        0 09
UUID=cf9ffcaf-d595-4545-9fd9-3573d573976e /boot  xfs  defaults        0 010
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011
hello
yan

i参数插入 i是在最后一行前面,a是添加到最后一行

[root@docker3 mnt]# sed '$ihello\nyan' fstab 
1
#2
# /etc/fstab3
# Created by anaconda on Sun Mar 28 10:44:35 2021 4
#5
# Accessible filesystems, by reference, are maintained under '/dev/disk'6
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info7
#8
/dev/mapper/rhel-root   /                       xfs     defaults        0 09
UUID=cf9ffcaf-d595-4545-9fd9-3573d573976e /boot  xfs  defaults        0 010
hello
yan
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011
[root@docker3 mnt]# sed '1ihello\nyan' fstab 
hello
yan
1
#2
# /etc/fstab3
# Created by anaconda on Sun Mar 28 10:44:35 2021 4
#5
# Accessible filesystems, by reference, are maintained under '/dev/disk'6
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info7
#8
/dev/mapper/rhel-root   /                       xfs     defaults        0 09
UUID=cf9ffcaf-d595-4545-9fd9-3573d573976e /boot  xfs  defaults        0 010
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011

c参数替换

[root@docker3 mnt]# sed '/^#/chello' fstab 
1
hello
hello
hello
hello
hello
hello
hello
/dev/mapper/rhel-root   /                       xfs     defaults        0 09
UUID=cf9ffcaf-d595-4545-9fd9-3573d573976e /boot  xfs  defaults        0 010
/dev/mapper/rhel-swap   swap                    swap    defaults        0 011

w参数写入

[root@docker3 mnt]# sed '/^#/w file ' fstab 
[root@docker3 mnt]# cat file\  
#2
# /etc/fstab3
# Created by anaconda on Sun Mar 28 10:44:35 2021 4
#5
# Accessible filesystems, by reference, are maintained under '/dev/disk'6
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info7
#8
就是
[root@docker3 mnt]# sed -n '/^#/p' fstab > file
[root@docker3 mnt]# cat file
#2
# /etc/fstab3
# Created by anaconda on Sun Mar 28 10:44:35 2021 4
#5
# Accessible filesystems, by reference, are maintained under '/dev/disk'6
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info7
#8

r

[root@docker3 mnt]# cat yan
1
2
3
[root@docker3 mnt]# cat yan1
4
5
6
[root@docker3 mnt]# cat yan yan1
1
2
3
4
5
6
[root@docker3 mnt]# cat yan yan1 > file

倒叙

[root@docker3 mnt]# tac yan
3
2
1
[root@docker3 mnt]# tac yan yan1
3
2
1
6
5
4
[root@docker3 mnt]# tac yan1 yan
6
5
4
3
2
1

cat tac无法把文件yan1整合到数字1后面,可以正序也可以倒序
1r第一行后面

[root@docker3 mnt]# sed '1ryan1' yan
1
4
5
6
2
3

整合到某关键字后面

[root@docker3 mnt]# sed '/2/ryan1' yan
1
2
4
5
6
3

更改到原文件

[root@docker3 mnt]# sed '/2/ryan1' -i yan
[root@docker3 mnt]# cat yan
1
2
4
5
6
3

脚本
Apache_port.sh
此脚本接入数字
http的端口就改为此数字
假设selinux为关闭状态
在这里插入图片描述

[root@docker3 mnt]# sh Apacha_port.sh 
Error: Please input port number following script!!!
[root@docker3 mnt]# sh Apacha_port.sh 80
Error:Apache is not installed!!

双引号不能被引用变量,单引号会注释变量,所以Listen注意是要双引号
在这里插入图片描述

[root@docker3 mnt]# sh Apacha_port.sh 8080
[root@docker3 mnt]# netstat -antlp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      4140/httpd       
[root@docker3 mnt]# sh Apacha_port.sh 80
[root@docker3 mnt]# netstat -antlp | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      4172/httpd          

sed字符替换
s是全文的行,g全文的列
部分展示 /表示分割符

[root@docker3 mnt]# sed 's/sbin/hello/g' passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/hello/nologin
daemon:x:2:2:daemon:/hello:/hello/nologin
adm:x:3:4:adm:/var/adm:/hello/nologin
lp:x:4:7:lp:/var/spool/lpd:/hello/nologin
sync:x:5:0:sync:/hello:/bin/sync
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/hello/nologin
postfix:x:89:89::/var/spool/postfix:/hello/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/hello/nologin
yan:x:1000:1000::/home/yan:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/hello/nologin
[root@docker3 mnt]# sed 's/:/  /g' 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
shutdown  x  6  0  shutdown  /sbin  /sbin/shutdown
halt  x  7  0  halt  /sbin  /sbin/halt
mail  x  8  12  mail  /var/spool/mail  /sbin/nologin
operator  x  11  0  operator  /root  /sbin/nologin
games  x  12  100  games  /usr/games  /sbin/nologin
[root@docker3 mnt]# sed 's/:/  /' 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
shutdown  x:6:0:shutdown:/sbin:/sbin/shutdown
[root@docker3 mnt]# sed '1,5s/:/  /' 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
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
[root@docker3 mnt]# sed '/lp/,/halt/s/:/  /g' 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
shutdown  x  6  0  shutdown  /sbin  /sbin/shutdown
halt  x  7  0  halt  /sbin  /sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

最后一行

[root@docker3 mnt]# sed '$s/:/  /g' passwd 
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
yan:x:1000:1000::/home/yan:/bin/bash
apache  x  48  48  Apache  /usr/share/httpd  /sbin/nologin
[root@docker3 mnt]# sed '$s/:/  /g;s/sbin/hello/g'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/hello/nologin
daemon:x:2:2:daemon:/hello:/hello/nologin
adm:x:3:4:adm:/var/adm:/hello/nologin
lp:x:4:7:lp:/var/spool/lpd:/hello/nologin
sync:x:5:0:sync:/hello:/bin/sync
shutdown:x:6:0:shutdown:/hello:/hello/shutdown

替换/,/需要转义,因为它是分割符

[root@docker3 mnt]# sed 's/:/  /g;s/\//##/g'  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

/表示分割符,可以换成@

[root@docker3 mnt]# sed 's@:@ @g;s@/@##@g' 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

END

相关文章:

shell文本处理工具-shell三剑客1

shell脚本常用基础命令2 shell脚本常用基础命令 shell脚本常用基础命令2一、grep用法二、sed用法2.1p参数 &#xff08;显示&#xff09;n参数&#xff08;只显示处理过的行&#xff09; 文本处理三剑客&#xff1a;grep sed awk 一、grep用法 grep -E egrep (扩展搜索正文表…...

函数的传入参数-传参定义

基于函数的定义语法&#xff1a; def 函数名&#xff08;传入参数&#xff09;函数体return 返回值 可以有如下函数定义&#xff1a; def add(x,y):return xyprint(f"{x} {y}的结果是&#xff1a;{result}") 实现了&#xff0c;每次计算的是xy&#xff0c;而非…...

主流接口测试框架对比,究竟哪个更好用

公司计划系统的开展接口自动化测试&#xff0c;需要我这边调研一下主流的接口测试框架给后端测试&#xff08;主要测试接口&#xff09;的同事介绍一下每个框架的特定和使用方式。后端同事根据他们接口的特点提出一下需求&#xff0c;看哪个框架更适合我们。 需求 1、接口编写…...

常用python模板

1.简单脚本模板 def main():#代码逻辑if __name__"__main__":main() 2.类定义模板 Class Myclass:def __init__(self,parameter):self.parameterparameterdef my_method(self):#方法逻辑 3.函数定义模板 def my_function(parameter):#代码逻辑return result 4.…...

53. 最大子数组和(力扣LeetCode)

文章目录 53. 最大子数组和题目描述暴力&#xff08;运行超时&#xff09;贪心 53. 最大子数组和 题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组是数组…...

如何远程SSH连接在家的服务器主机

当您需要通过SSH远程连接到家里的服务器主机时&#xff0c;以下是更详细的实施步骤&#xff1a; 1. 确保服务器主机已开启SSH服务 安装SSH服务&#xff1a;首先&#xff0c;确保您的服务器主机上安装了SSH服务。根据您的操作系统&#xff0c;您可以使用相应的包管理器来安装。…...

【亲测有效】解决三月八号ChatGPT 发消息无响应!

背景 今天忽然发现 ChatGPT 无法发送消息&#xff0c;能查看历史对话&#xff0c;但是无法发送消息。 可能的原因 出现这个问题的各位&#xff0c;应该都是点击登录后顶部弹窗邀请 [加入多语言 alapha 测试] 了&#xff0c;并且语言选择了中文&#xff0c;抓包看到 ab.chatg…...

vue结合vue-electron创建应用程序

这里写自定义目录标题 安装electron第一种方式&#xff1a;vue init electron-vue第二种方式&#xff1a;vue add electron-builder 启动electron调试功能&#xff1a;background操作和使用1、覆盖窗口的菜单上下文、右键菜单2、监听关闭事件、阻止默认行为3、创建悬浮窗口4、窗…...

【C++】STL(二) string容器

一、string基本概念 1、本质 string是C风格的字符串&#xff0c;而string本质上是一个类 string和char * 区别&#xff1a; char * 是一个指针 string是一个类&#xff0c;类内部封装了char*&#xff0c;管理这个字符串&#xff0c;是一个char*型的容器。 2、特点 1、stri…...

PyCM:Python中的混淆矩阵库

PyCM&#xff1a;Python中的混淆矩阵库 在机器学习和数据科学领域&#xff0c;评估模型的性能是至关重要的。混淆矩阵是一种常用的评估工具&#xff0c;用于可视化和量化分类模型的预测结果。PyCM是一个开源的Python库&#xff0c;提供了丰富的功能来计算和分析混淆矩阵。本文将…...

Day22:安全开发-PHP应用留言板功能超全局变量数据库操作第三方插件引用

目录 开发环境 数据导入-mysql架构&库表列 数据库操作-mysqli函数&增删改查 数据接收输出-html混编&超全局变量 第三方插件引用-js传参&函数对象调用 完整源码 思维导图 PHP知识点&#xff1a; 功能&#xff1a;新闻列表&#xff0c;会员中心&#xff0…...

IOS面试题object-c 61-70

61. 阐述isKindOfClass、isMemberOfClass、selector作用分别是什么&#xff1f;isKindOfClass&#xff1a;作用是某个对象属于某个类型或者继承自某类型。 isMemberOfClass&#xff1a;某个对象确切属于某个类型。 selector&#xff1a;通过方法名&#xff0c;获取在内存中的函…...

Git指令reset的参数soft、mixed与hard三者之间的区别

主要内容 reset默认不写参数&#xff0c;与使用mixed参数含义一样 为了描述简洁&#xff0c;使用下图说明&#xff1a; #mermaid-svg-LtChquRXlEV1j6og {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-LtChquRXlEV1j…...

RGMII 接口调试

目录 硬件检查 软件检查 调试步骤 硬件检查 硬件工程师检查原理图和PCB&#xff0c;核查RGMII线路连接是否正确&#xff0c;PHY的 TX连接对端 RX&#xff0c;PHY的RX连接对端TX&#xff0c;原理图上以引脚序号引脚名 引脚类型(输入还是输出)逐一核查RGMII接口各个网络&#…...

Ubuntu 24.04 抢先体验换国内源 清华源 阿里源 中科大源 163源

Update 240307:Ubuntu 24.04 LTS 进入功能冻结期 预计4月25日正式发布。 Ubuntu22.04换源 Ubuntu 24.04重要升级daily版本下载换源步骤 (阿里源)清华源中科大源网易163源 Ubuntu 24.04 LTS&#xff0c;代号 「Noble Numbat」&#xff0c;即将与我们见面&#xff01; Canonica…...

软件设计模式:模板方法模式

1. 简介 模板方法模式是一种行为型设计模式&#xff0c;它定义了一个算法的骨架&#xff0c;将一些步骤延迟到子类中实现。这样&#xff0c;可以在不改变算法结构的情况下&#xff0c;重新定义算法中的某些步骤。 2. 使用条件 模板方法模式适用于以下情况&#xff1a; 算法…...

【算法】Hash存储——开放寻址法

模拟散列表 维护一个集合&#xff0c;支持如下几种操作&#xff1a; I x&#xff0c;插入一个整数 x&#xff1b; Q x&#xff0c;询问整数 x是否在集合中出现过&#xff1b; 现在要进行 N次操作&#xff0c;对于每个询问操作输出对应的结果。 输入格式 第一行包含整数 N&am…...

STM32CubeIDE基础学习-STM32CubeIDE软件程序下载方法

STM32CubeIDE基础学习-STM32CubeIDE软件代码下载方法 文章目录 STM32CubeIDE基础学习-STM32CubeIDE软件代码下载方法前言第1章 代码下载第2章 下载器固件更新总结 前言 编写完代码&#xff0c;一般都会选择在线下载程序的方式进行验证该程序是否正确&#xff0c;如果发现结果和…...

LeetCode 174.地下城游戏 Python题解

地下城游戏 # 地下城游戏 """ 恶魔们抓住了公主并将她关在了地下城dungeon的右下角。地下城是由mxn个房间组成的二维网格。我们英勇的骑士最初被安置在左上角的房间里&#xff0c; 他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数…...

指令调用模板

也就是这边指令通过id和map会定位到一个结构体&#xff0c;然后这个结构再赋值两个成员&#xff0c;一个是函数一个是指令类型&#xff0c;然后这个函数是模板的实例化 使用的时候就传进去&#xff0c;这只是参数&#xff0c;最开始初始化的时候模板就已经实例化了。然后关于模…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数&#xff08;接收函数&#xff09; sendto函数&#xff08;发送函数&#xff09; 五、网络编程之 UDP 用…...