Linux_Shell三剑客grep,awk,sed-08

news2024/9/29 7:31:26

三剑客的概述:

awk、grep、sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂。grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。

一:grep命令

grep命令是一种文本搜索工具,他能使用正则表达式搜索文本,并把匹配的行打印出来,grep的全称是Golobal Regular Expression Print表示全局正则表达式版本,它的使用权限是所有用户.

grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

1.1 基本语法        

grep [选项] 模式 [文件...]

# 管道命令一起
命令 | grep xxxx
  • 模式:你想要在文件中搜索的文本或正则表达式。
  • 文件...:你想要搜索的文件列表。如果省略文件名,grep 会从标准输入(通常是键盘输入或另一个命令的输出)中读取数据。

常用选项

常用选项释义
-i忽略大小写进行匹配。
-v反向查找,只打印不匹配的行。
-n显示匹配行的行号。
-r递归查找子目录中的文件。
-l只打印匹配的文件名。
-c只打印匹配的行数。
-w只匹配整个单词,而不是部分匹配。
-o只显示匹配的部分,而不是整行。
-A n显示匹配行及后面n行的内容。
-B n显示匹配行及前面n行的内容。
-C n显示匹配行及前后各n行的内容。
-e pattern指定多个匹配模式。
-E使用扩展正则表达式进行匹配。
-F将模式视为固定字符串而不是正则表达式。

1.2 使用举例 

示例1

准备test

# -A2 7 的效果就是找到 7 ,然后输出 2 后面两行
[root@localhost ~]# grep -A2 7 test

# -B2 7找到 7 ,然后输出 2 前面两行
[root@localhost ~]# grep -B2 7 test

 


#查找test中的aaa
[root@localhost ~]# grep -c aaa test

# -i:忽略大小写
[root@localhost ~]# grep -i aaa test

# -n:显示匹配的行号
[root@localhost ~]# grep -n -i aaa test

# -c:输出匹配到的共计行数
[root@localhost ~]# grep -c aaa test

 #-n:输出匹配到的这些行的内容以及它们各自的行号。
[root@localhost ~]# grep -n aaa test

# -e:实现多个匹配之间的或关系,查找包含aaa或者bbb的
[root@localhost ~]# grep -e aaa -e bbb test

 

grep -F

grep -F相当于fgrep命令,就是将pattern视为固定字符串。

grep命令中的-F选项用于将搜索模式视为固定字符串(fixed strings),而不是正则表达式(regular expressions)。这意味着grep在搜索时不会将搜索模式中的特殊字符(如.*?[]^$\{\}|\()等)视为正则表达式的元字符,而是将它们视为普通字符。

使用-F选项可以加快搜索速度,特别是当你知道搜索模式不包含任何正则表达式元字符,或者你不希望grep对这些字符进行特殊处理时。

例如,如果你有一个文件example.txt,内容如下:

hello.world  
hello*world  
hello?world  
hello[world

如果你想要搜索包含hello*world这个确切字符串的行(注意这里的*是普通字符,不是正则表达式中的“零个或多个前面字符”的意思),你可以使用grep -F来实现:

grep -F "hello*world" example.txt

这个命令会输出:

hello*world

如果你不使用-F选项,grep会将*视为正则表达式元字符,并尝试匹配零个或多个o字符,这可能会导致不同的结果,具体取决于文件内容。

总结来说,-F选项让grep将搜索模式视为纯文本字符串,不进行正则表达式的特殊字符处理。这在处理包含正则表达式元字符的文本时非常有用,尤其是当你想要搜索这些元字符本身时。

grep -f

grep命令中的-f选项允许你从一个文件中读取正则表达式模式,而不是直接在命令行中指定它们。这意味着你可以将多个搜索模式保存在一个文件中,然后使用grep -f选项和该文件作为输入来搜索目标文件中的匹配项。

使用-f选项时,你需要在文件中每行指定一个搜索模式。当grep运行时,它会读取这个文件中的每一行,并将其视为一个搜索模式,然后在目标文件中查找这些模式的匹配项。

这个选项在处理多个搜索模式时非常有用,特别是当这些模式太复杂或太多,以至于直接在命令行中指定它们会变得不切实际时。

例如,假设你有一个名为patterns.txt的文件,内容如下:

error  
warning  
notice

这个文件包含了你想要在另一个文件(比如logfile.txt)中搜索的三个模式。你可以使用以下命令来搜索这些模式:

grep -f patterns.txt logfile.txt
这个命令会搜索logfile.txt文件中所有包含error、warning或notice的行,并将它们打印出来。

请注意,patterns.txt文件中的每一行都被视为一个独立的正则表达式,因此你可以在其中包含正则表达式的特殊字符(尽管这可能会使模式匹配变得更加复杂)。但是,如果你只是想进行简单的文本匹配,并且不希望grep将文件中的特殊字符视为正则表达式元字符,你可以结合使用-F-f选项,但请注意,-F选项实际上会覆盖对正则表达式元字符的特殊处理,因此它可能不是你想要的效果(除非你真的只想进行纯文本匹配)。如果你想要从文件中读取模式,但又不希望这些模式中的特殊字符被解释为正则表达式,你可能需要手动转义这些特殊字符,或者确保它们不是正则表达式的元字符。

# -v:显示不被匹配到的行

[root@localhost Desktop]# cat test | grep -v -i aa 

1.3 grep egrep fgrep

  • grep:可以使用基本正则表达式进行内容查找匹配

  • egrep:可以使用扩展的正则表达式进行内容查找匹配

  • fgrep:只能查找固定内容,无法使用正则进行匹配

# 查找所有a开头结尾是z的内容
[root@localhost ~]# grep 'a.*z' data

# 查找以a开头结尾为z,或者以a开头结尾为c的内容
[root@localhost ~]# egrep 'a.*z|a.*c' data

# 只查找内容是axz的内容
[root@localhost ~]# fgrep 'a*z' data
[root@localhost ~]# grep -F 'a*z' data

二:sed命令 

在Linux中,sed(stream editor)是一种非常强大的流编辑器,它可以对文本进行过滤和转换。sed命令读取输入流(文件、管道等),对每一行应用你指定的编辑命令,然后将结果输出到标准输出(通常是屏幕,但也可以重定向到文件)。sed非常适合于执行文本替换、删除、插入和选择等操作。

2.1sed的基本语法:

 sed [-nefri] ‘command’ 输入文本   

选项说明

-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。

​ -e∶直接在指令列模式上进行 sed 的动作编辑; ​

-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;

​ -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)

​ -i∶直接修改读取的档案内容,而不是由屏幕输出。

动作说明

a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ ​

c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! ​

d ∶删除,因为是删除啊,所以 d 后面通常不接任何内容; ​

i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);

p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~ ​

s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g

2.2 使用举例

定义文件test,内容如下

    HELLO LINUX!  
    Linux is a free unix-type opterating system.  
    This is a linux testfile!  
    Linux test

2.2.1:增加内容

增加一行

在test输出的第一行后面追加一句my name is dijia

[root@localhost sedTest]# sed '1a my name is dijia' test
HELLO LINUX!  
my name is dijia
Linux is a free unix-type opterating system.  
This is a linux testfile!  

注意:只是将文字处理了,没有写入到文件里,文件里还是之前的内容。

查看文件的内容:

[root@localhost sedTest]# cat test
HELLO LINUX!  
Linux is a free unix-type opterating system.  
This is a linux testfile!  

发现文件的内容并没有发生任何的变化

增加多行

在一行到第三行的后面追加上my name is dijia

[root@localhost sedTest]# sed '1,3a my name is dijia' test
HELLO LINUX!  
my name is dijia
Linux is a free unix-type opterating system.  
my name is dijia
This is a linux testfile!  
my name is dijia

2.2.2:插入内容

在最后一行插入byebye

[root@localhost sedTest]# sed '$a byby' test
HELLO LINUX!  
Linux is a free unix-type opterating system.  
This is a linux testfile!  
Linux test
byby

在这之前都是修改的输出内容,如果要修改文件中的真实内容加上一个 -i 就可以

如:

[root@localhost sedTest]# sed  - i '$a byby' test
HELLO LINUX!  
Linux is a free unix-type opterating system.  
This is a linux testfile!  
Linux test
byby

2.2.3:删除内容

删除的字符是d,用法跟前面也很相似,对匹配到的数据行,进行删除。

删除第一行

Linux test[root@localhost sedTest]# sed 1d test
Linux is a free unix-type opterating system.  
This is a linux testfile! 

 删除最后一行 

[root@localhost sedTest]# sed '$d' test
HELLO LINUX!  
Linux is a free unix-type opterating system.  
This is a linux testfile!

删除1到3行

[root@localhost sedTest]#  sed '1,3d' test
Linux test[root@localhost sedTest]# 

删除第二行到最后一行

[root@localhost sedTest]#  sed '1,3d' test
Linux test[root@localhost sedTest]# 

删除Linux打头的

[root@localhost sedTest]#  sed '/Linux/d' test
HELLO LINUX!  
This is a linux testfile!  

2.2.4:替换内容

将含有Linux的哪一行替换为dijia

Linux test[root@localhost sedTest]# sed '/Linux/c dijia' test
HELLO LINUX!  
dijia
This is a linux testfile!  
dijia

字符替换

s替换指定字符

语法: sed 's/原来的字符/新的字符/g' 文件名

将Linux的字符替换为dijia

[root@localhost sedTest]# sed 's/Linux/dijia/g' test
HELLO LINUX!  
dijia is a free unix-type opterating system.  
This is a linux testfile!  
dijia test[root@localhost sedTest]# 

给每一行内容前都加上### 

[root@localhost sedTest]# sed 's/^/###/g' test
###HELLO LINUX!  
###Linux is a free unix-type opterating system.  
###This is a linux testfile!  
###Linux test[root@localhost sedTest]# 

给每一行内容后都加上###

[root@localhost sedTest]# sed 's/$/###/g' test
HELLO LINUX!  ###
Linux is a free unix-type opterating system.  ###
This is a linux testfile!  ###
Linux test###[root@localhost sedTest]# 

这个其实就是正则表达式的语法,其他类似语法还有:

 ^ 表示一行的开头。如:/^#/ 以#开头的匹配。
​
 $ 表示一行的结尾。如:/}$/ 以}结尾的匹配。
​
 \< 表示词首。 如:\<abc 表示以 abc 为首的詞。This is  a cat abcTest  abcQQQ
​
 \> 表示词尾。 如:abc\> 表示以 abc 結尾的詞。
 . 表示任何单个字符。
​
 * 表示某个字符出现了0次或多次。
​
 [ ] 字符集合。 如:[abc] 表示匹配a或b或c,还有 [a-zA-Z] 表示匹配所有的26个字符。如果其中有^表示反,    如 [^a] 表示非a的字符

2.2.5:多个匹配

用-e命令可以执行多次匹配,相当于顺序依次执行两个sed命令:

同时给每行内容的前后都加上###

[root@localhost sedTest]# sed -e 's/^/###/g'  -e 's/$/###/g' sed-1
###HELLO LINUX!  ###
###Linux is a free unix-type opterating system.  ###
###This is a linux testfile!  ###
###Linux test###[root@localhost sedTest]# ^C

2.2.6:日志截取

定位日志

在系统应用集中部署的时候,很多日志因为太多难以定位,获取某段时间的日志是对运维人员非常关键的事情。

sed查看某时间的系统日志:

sed -n '/2024-03-17 09:25:55/,/2024-03-18 09:25:55/p'  logfile

sed查看某时间段到现在的系统日志:

sed  -n  '/2024-03-17 09:25:55/,$p'   logfile

三:awk命令

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。

之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符

linux中有三剑客之称: 三剑客之首就是 AWK

三剑客  功能:

grep : 过滤文本

sed : 修改文本

awk : 处理文本

awk只要是用来格式化文本

3.1 基本语法

awk [参数] [处理内容] [操作对象] 

参数说明

参数说明
-F separator指定字段分隔符。
-f file从指定的文件中读取程序
-v var=value定义awk程序中的一个变量及其默认值
-mf N指定要处理的数据文件中的最大字段数
-mr N指定数据文件中的最大数据行数
-W keyword指定awk的兼容模式或警告等级

4.2 使用举例

4.2.1 从命令行读取程序脚本

awk 动作 文件名

准备一个文件test

## 4.2 使用举例

### 4.2.1 从命令行读取程序脚本

```
awk 动作 文件名
```

准备一个文件test

~~~shell
2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo
1	zs	男	A11	80;90;100
2	ls	男	A12	80;50;60
3	ww	女	A13	30;20;40
4	aa	女	A14	50;20;40
5	zl	男	A15	50;60;30
~~~

打印第二行内容

[root@localhost awkTest]# awk '{print $2}' test
this
Are
a
There
zs
ls
ww
aa
zl

打印第一列和第四列的内容

[root@localhost awkTest]# awk '{print $1,$4}' test
2 a
3 like
This's 
10 orange,apple,mongo
1 A11
2 A12
3 A13
4 A14
5 A15
[root@localhost awkTest]# 

打印以逗号分隔的第一列值和第二列值 

[root@localhost awkTest]# awk -F ' ' '{print $1,$2}' test
2 this
3 Are
This's a
10 There
1 zs
2 ls
3 ww
4 aa
5 zl

匹配项中可以用正则表达式,比如:

查找以This开头的行

[root@localhost ~]# awk '/^This/' test3

查找以awk为结束的行

[root@localhost ~]# awk '/awk$/' test
匹配的就是严格以This开头的内容。

使用数据字段变量

awk会将如下变量分配给它在文本行中发现的数据字段(列):

  • $0代表整个文本行;

  • $1代表文本行中的第1个数据字段;

  • $2代表文本行中的第2个数据字段;

  • $n代表文本行中的第n个数据字段。

  • !: 逻辑非

  • ~ : 进行正则匹配(类似于关系表达式)

查找不包含is关键字的内容

[root@localhost awkTest]# awk '$0 !~ /is/' test
3 Are you like awk
10 There are orange,apple,mongo
1       zs      男      A11     80;90;100
2       ls      男      A12     80;50;60
3       ww      女      A13     30;20;40
4       aa      女      A14     50;20;40
5       zl      男      A15     50;60;30

查找包含is关键字的内容

[root@localhost awkTest]# awk '$0 ~ /is/' test
2 this is a test
This's a test

4.2.2 变量

wk中有不少内置的变量,比如$NF代表的是分割后的字段数量,相当于取最后一个。

NF: number filed 当前行分割后的字段个数。打印的时候,是取出最后一列

NR: number row 表示当前第几行

[root@localhost awkTest]# awk '{print $NF}' test
test
awk
test
orange,apple,mongo
80;90;100
80;50;60
30;20;40
50;20;40
50;60;30

输出当前行有几列,以及当前是第几行   每行内容后的两个数字,一共有几列,是第几行

[root@localhost awkTest]# awk '{print $0,NF,NR}' test
2 this is a test 5 1
3 Are you like awk 5 2
This's a test 3 3
10 There are orange,apple,mongo 4 4
1       zs      男      A11     80;90;100 5 5
2       ls      男      A12     80;50;60 5 6
3       ww      女      A13     30;20;40 5 7
4       aa      女      A14     50;20;40 5 8
5       zl      男      A15     50;60;30 5 9

其他的内置变量还有:

变量名说明
FILENAME:当前文件名
FS字段分隔符,默认是空格和制表符。
RS行分隔符,用于分割每一行,默认是换行符。
OFS输出字段的分隔符,用于打印时分隔字段,默认为空格。
ORS输出记录的分隔符,用于打印时分隔记录,默认为换行符。
OFMT数字输出的格式,默认为%.6g。

执行输出结果的各个列,用指定符号分隔

[root@localhost awkTest]# awk '{print $1,$2,$3}' OFS="-" test
2-this-is
3-Are-you
This's-a-test
10-There-are
1-zs-男
2-ls-男
3-ww-女
4-aa-女
5-zl-男

4.2.3 函数

awk还提供了一些内置函数,方便对原始数据的处理。主要如下:

toupper():字符转为大写。
tolower():字符转为小写。
length():返回字符串长度。
substr():返回子字符串。
sin():正弦。
cos():余弦。
sqrt():平方根。
rand():随机数。

将每行内容的最后一列转为大写形式输出

[root@localhost awkTest]# awk '{print toupper($NF)}' test
TEST
AWK
TEST
ORANGE,APPLE,MONGO
80;90;100
80;50;60
30;20;40
50;20;40
50;60;30

将当前行的第一列转为大写内容输出,并输出当前行的长度

[root@localhost ~]# awk '{print toupper($1),length($0)}' test
2 16
3 18
THIS'S 13
10 31

4.2.3 条件

awk允许指定输出条件,只输出符合条件的行。输出条件要写在动作的前面:

awk '条件 动作' 文件名

还是刚才的例子,用逗号分隔之后有好几个空白行,我们加上限制条件,匹配后为空的不显示:  

[root@localhost awkTest]# awk -F, '$2!=""{print $2}' test
apple
4.2.3.1 if 语句

awk提供了if结构,用于编写复杂的条件。

将第一列内容大于2的行输出:  

[root@localhost awkTest]# awk '{ if ( $1 > 2) print $0}' test
3 Are you like awk
This's a test
10 There are orange,apple,mongo
3       ww      女      A13     30;20;40
4       aa      女      A14     50;20;40
5       zl      男      A15     50;60;30
4.2.3.2 begin 语句 end 语句

语法格式:

awk 'BEGIN{ commands } pattern{ commands } END{ commands }'

多行操作

准备文件test02

111 222 333
444 555 666
777 888 999
[root@localhost awkTest]# awk 'BEGIN{print "开始"} {print $1 "-" $2 "-" $3} END{print "结束"}' test02
开始
111-222-333
444-555-666
777-888-99
结束
4.2.3.2 从文件中读取

假设有这么一个文件(学生成绩表):

[root@localhost ~]# cat score.txt 
Marry   2143 78 84 77
Jack    2321 66 78 45
Tom     2122 48 77 71
Mike    2537 87 97 95
Bob     2415 40 57 62

我们的 awk 脚本如下:  

#!/bin/awk -f
#运行前
BEGIN {
math = 0;
english = 0;
computer = 0;
 printf "NAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL\n"
    printf "---------------------------------------------\n"
}
#运行中
{
math+=$3
english+=$4
computer+=$5
 printf "%-6s %-6s %4d %8d %8d %8d\n", $1, $2, $3,$4,$5, $3+$4+$5
}
#运行后
END {
   printf "---------------------------------------------\n"
    printf "  TOTAL:%10d %8d %8d \n", math, english, computer
    printf "AVERAGE:%10.2f %8.2f %8.2f\n", math/NR, english/NR, computer/NR
}

我们来看一下执行结果:

[root@localhost awkTest]# awk -f cal.awk score.txt
NAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL
---------------------------------------------
Marry  2143     78       84       77      239
Jack   2321     66       78       45      189
Tom    2122     48       77       71      196
Mike   2537     87       97       95      279
Bob    2415     40       57       62      159
---------------------------------------------
  TOTAL:       319      393      350 
AVERAGE:     63.80    78.60    70.00
[root@localhost awkTest]# 

总结

grep: 主要用户行内容的检索,通过正则表达式进行内容匹配,不能修改匹配的内容

sed: 可以进行内容匹配,对于匹配的内容可以进行修改

awk:针对指定行内容进行复杂处理,一般用于报表生成

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

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

相关文章

英伟达开源 Nemotron-4-4B:小型模型,大能量

前沿科技速递&#x1f680; 在人工智能领域&#xff0c;语言模型已经成为推动自然语言处理&#xff08;NLP&#xff09;进步的关键力量。然而&#xff0c;随着模型规模的不断扩大&#xff0c;训练和部署这些大型语言模型&#xff08;LLM&#xff09;的资源成本也在急剧增加。为…

2024年8月 trueNas 容器端口只能设置大于9000问题解决

前言 这两天在搭建个人nas&#xff0c;想顺便在局域网搭建一个dns服务器&#xff0c;我采用的是jpillora/dnsmasq的docker镜像搭建的&#xff0c;但是遇到一个问题始终无法解决容器端口必须大于9000&#xff0c;而dns使用的端口是53是改不了的&#xff0c;找了很多资料发现有老…

地图相册系统的设计与实现

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…

Transformer 中自注意力机制的 一些细节理解

摘自知乎博主https://www.zhihu.com/question/362131975/answer/2182682685?utm_oi78365163782144 作者&#xff1a;月来客栈 链接&#xff1a;https://www.zhihu.com/question/362131975/answer/2182682685 1. 多头注意力机制原理 1.1 动机 首先让我们先一起来看看作者当…

IP SSL证书快速申请教程

在互联网安全领域中&#xff0c;SSL证书是比较普遍的传输数据加密方式之一。SSL证书通过建立加密通道&#xff0c;确保客户端与服务器之间传输的数据不被第三方窃取或篡改。而大多数SSL证书&#xff0c;如单域名SSL证书、多域名SSL证书以及通配符SSL证书&#xff0c;在申请时必…

颇为实用的现代化开源数据表格GristCore

GristCore&#xff1a;用Grist&#xff0c;让数据自动化&#xff0c;让工作更智能。 - 精选真开源&#xff0c;释放新价值。 概览 Grist-core项目是Grist的心脏&#xff0c;是一个创新的在线数据协作平台&#xff0c;它突破了传统电子表格的局限&#xff0c;引入了先进的自动化…

宋仕强论道之效率与成本的关系

宋仕强论道之效率与成本的关系中说&#xff0c;效率于企业的意义重大&#xff0c;一是技术发展和应用带来效率提高&#xff0c;农耕文明与工业时代分别以铁制农具应用和电气化为标志。在现阶段&#xff0c;人工智能&#xff08;AI&#xff09;是目前最有效的新技术&#xff0c;…

Linux找回root密码,帮助指令

目录 找回root密码 帮助指令 man获得帮助指令 help指令 应用实例 找回root密码 进入开机界面&#xff0c;输入e进入编辑界面。 在指定位置输入init/bin/sh 再输入ctrlx进入单用户模式。 最后输入passwd修改密码。 帮助指令 man获得帮助指令 man ls后可以看到很多指令以…

【leetcode】相交链表-25-1

方法&#xff1a;遍历 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {…

Gene_processing_system-v2.0使用之环境变量配置

Gene_processing_system-v2.0环境变量配置 在D盘路径解压上述文件《Gene_processing_system-v2.0.zip》&#xff0c;解压后&#xff0c;对内置Python3.9环境变量进行配置。操作如下&#xff1a; 环境变量配置 第一步&#xff1a;复制python3.9路径值&#xff0c;复制路径值为…

【MySQL】数据的基本操作(CRUD)

系列文章目录 例如&#xff1a;第一章 数据库基础 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、对数据简单操作新增操作 (create)查询操作(select)模糊查询分页查询修改操作(update)删除操…

C 开源库之cJSON

cJSON简介 CJSON库是一个用于解析和生成JSON数据的C语言库。 它提供了一组函数&#xff0c;使得在C语言中操作JSON数据变得简单而高效。 您可以使用CJSON库来解析从服务器返回的JSON数据&#xff0c;或者将C语言数据结构转换为JSON格式以进行传输。 cJSON 使用 官网地址&…

JAVA同城找搭子同城交友系统小程序源码

&#x1f308;【同城搭子交友系统】—— 遇见你的城市小确幸✨ &#x1f46d; 城市喧嚣中的温暖邂逅 在繁忙的都市生活中&#xff0c;你是否常常感到孤单&#xff0c;渴望有那么几个志同道合的朋友&#xff0c;一起探索这座城市的每一个角落&#xff1f;&#x1f3d9;️ 同城…

【机器学习-监督学习】逻辑斯谛回归

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…

【前端 23】用Less优化你的CSS书写体验

用Less优化你的CSS书写体验 Less&#xff08;Leaner Style Sheets&#xff09;是一种CSS预处理器&#xff0c;它扩展了CSS的功能&#xff0c;引入了变量、嵌套规则、混合&#xff08;Mixins&#xff09;、运算等特性&#xff0c;使得CSS编写更加灵活和强大。下面&#xff0c;我…

【虚拟化】KVM命令行安装linux虚拟机

目录 ​一、KVM概述 1.1 KVM是什么 1.2 KVM和QEMU的关系 1.3 kvm相关安装包及其作用 二、安装KVM 三、命令行创建虚拟机并安装CentOS7 四、报错处理 4.1 问题1 4.2 问题2 一、KVM概述 1.1 KVM是什么 KVM(Kernel-based Virtual Machine, 即内核级虚拟机) 是一个开源的系…

热门好用骨传导耳机怎么挑选?推荐这五款值得入手的骨传导耳机

近两年来&#xff0c;骨传导运动蓝牙耳机在运动领域内日益流行。与传统耳机相比&#xff0c;它的显著优势是能够保持双耳开放&#xff0c;不会堵塞耳道&#xff0c;消除了入耳式耳机可能引起的不适感。此外还能避免运动时耳内出汗可能导致的各种卫生和健康问题。很多人就问了&a…

3.4交换机端口安全配置的方法和步骤

一、设置端口安全性 switchport port-security 二、设置某端口的安全Mac地址 switchport port-security mac-address <mac 地址> 三、设置端口允许通过的最多mac地址数量 switchport port-security maximum<数量> 默认为1,通常最多1024个 四、检测到违规时的…

leetcode 堆栈(栈+优先队列)——java实现

java创建堆栈和操作函数 Queue<String> queue new LinkedList<String> ();//队列定义 Deque<String> stack new LinkedList<String>();//堆栈 队列方法&#xff1a; queue.offer(e) null queue.poll() 返回移除的值 queue.peek() 堆栈方法&#xff1…

从零开始学cv-8:直方图操作进阶:直方图匹配,局部直方图均衡化,彩色直方图均衡化

文章目录 一&#xff0c;简介二、直方图匹配三、局部直方图均衡化四、彩色直方图均衡化4.1 rgb彩色直方图均衡化4.2 ycrb 彩色直方图均衡化 一&#xff0c;简介 在上一篇文章中&#xff0c;我们探讨了直方图的基本概念&#xff0c;并详细讲解了如何利用OpenCV来查看图像直方图…