Linux awk命令详解-参数-选项-内置变量-内置函数-脚本(多图、多示例)

文章目录

  • awk基础结构说明与示例
  • 参数与内置变量
    • 常用参数内置变量
    • 其他参数内置变量
  • 简单示例理解option
    • 简单参数
    • NR与FNR
    • -v ARGC ARGV参数
  • 执行脚本
    • if else
    • for循环
    • 关联数组
    • 指定匹配pattern
  • 使用正则指定分隔符
  • 理解pattern
    • 正则与逻辑
    • 算术
  • printf
  • if else for while
  • BEGIN END
  • next(跳过行)
  • 重定向输出到文件
  • 字符串函数
    • 替换函数
    • 拆分与查找函数
    • 其他字符串函数
    • 字符串函数示例
  • 算术函数
  • 其他函数
    • 系统调用(system)
    • 时间与格式化(mktime systime strftime)
    • 读取流数据,关闭流(getline close)
  • 实例
    • 与ss、netstat结合使用,查看IP 端口
    • 统计tcp连接中状态数量
    • 统计访问日志中404的数量
    • 查看本机ip地址
    • 统计文件夹下文件大小

awk基础结构说明与示例

这个非常重要,只有理解了awk的基础结构,才能一眼看清awk在做什么,也便于记忆,不然过几天就忘了。

awk [option] [BEGIN{}] ‘[pattern]{action}’ [END{}] file1 file2…

awk是按行处理指定文件的文本:

  1. option是选项,可以设置分隔符等,可选
  2. pattern是模式,匹配上才执行action,可选
  3. action是动作,例如输出等
  4. filename,表示要处理的文件
  5. BEGIN,awk开始之前执行1次
  6. END,awk结束之后执行1次

Linux awk命令结构

参数与内置变量

Linux awk命令参数内置变量说明

常用参数内置变量

符号变量说明
-F字段分隔符,默认空格
$0匹配到的当前行
$nn为1、2、3…表示记录分隔之后第n个字段
NFNumber of Field,awk当前处理行的字段数,要取最后一个字段就是$NF
NRNumber of Record,awk当前处理的记录数(通常是行)
FNRFile Number of Record,awk当前处理的行在文件中的记录数(通常是行)
FSField Separator,字段分隔符,默认空格
RSRecord Separator,记录(通常是行)分隔符,默认换行符

其他参数内置变量

符号变量说明
-f awk-script.awk指定awk脚本文件
OFS输出字段的分隔符,默认空格,Output Field Separator
ORS输出行(记录)的分隔符,默认换行符,Output Record Separator
FILENAME处理的文件名称
FIELDWIDTHS字段宽度
-v k=v指定awk参数
ARGCawk参数个数
ARGVawk参数关联数组
IGNORECASE是否忽略大小写
OFMT数字的输出格式,默认%.6g

简单示例理解option

我们先看一些简单的示例,来理解参数、变量

测试文件awk.txt

aa bb cc 11 dd 22 aa
bb cc aa
11 22 33
luck boy
11 33 22
11:22:33

简单参数

# 使用$0,输出所有行
awk '{print $0}' awk.txt# 使用空格做分隔符,输出第1个字段
awk '{print $1}' awk.txt
# 用:做分隔符,输出第1个字段
awk -F : '{print $1}' awk.txt# 使用空格做分隔符,输出最后1个字段
awk '{print $NF}' awk.txt# 使用空格做分隔符,输出每行字段总数
awk '{print NF}' awk.txt# 打印第一个字段和最后一个字段释义---作为字段分隔符
awk 'OFS="---" {print $1,$NF}' awk.txt# 释义ORS指定行分隔符
awk 'ORS="行分隔符" {print $1,$NF}' awk.txt

Linux awk命令指定分隔符

NR与FNR

NR和FNR主要区别体现在有多个文件的时候:

  1. NR是awk处理的当前总行数
  2. FNR是awk处理的当前行在文件中的行数
awk '{print "文件:"FILENAME,"NR:",NR,"FNR:",FNR}' a1.txt a2.txt

Linux awk命令NR与FNR

-v ARGC ARGV参数

echo | awk -v v1="参数1" -v v2="v2" 'BEGIN{print v1,v2,ARGC;for( a in ARGV){print a,ARGV[a]}}'

Linux awk命令指定参数与参数内置变量

执行脚本

awk可以写非常复杂的命令,有时候写在1行之中不好看,可以将命令写作文件中,然后像sed一样通过-f参数来执行脚本。

awk -f awk-script.awk awk.txt
#!/bin/awkBEGIN {print "脚本开始执行,设置选项"FS=" "RS="\n"ORS="\n\n"
}
{print $1","$NF
}
END{print "脚本执行完成"
}

Linux awk命令执行脚本

if else

{if ($1==11) {print "匹配到11"}else if ($1=="luck") {print "匹配到第1个字段luck"}else {print "第一个字段为其他值"}
}

Linux awk命令if else

for循环

for循环:

{for ( i=1;i<=5;i++ ) {print "第",i,"次for循环"}
}

关联数组

BEGIN {print "输出测试开始"
}
{state["TIME-WAIT"]+=NFstate["LISTEN"]+=NF*2
}
END{print "输出测试结束打印结果"for( s in state) {print state[s]}
}

指定匹配pattern

BEGIN {print "输出测试开始"
}
/^11/{state["TIME-WAIT"]+=NFstate["LISTEN"]+=NF*2
}
END{print "输出测试结束打印结果"for( s in state) {print s":",state[s]}
}

Linux awk命令数组

使用正则指定分隔符

例如,下面文件要如何分割其中的数字呢?

11,22,,33,,,4,5
11,,,22,,33,,,4,5
11 22,, 33 ,,, 4, 5
# 使用正则[ ,]+作为分隔符
awk -F '[ ,]+' '{print $1" "$NF}' split.txt# 使用1个或多个空白字符做分隔符
awk -F [[:space:]+] '{print $1,$2}' sed.txt # 查看网卡eth0的ipv4、掩码、广播地址
ifconfig eth0 | awk -F [" ":]+ 'NR==2{print "ip4:"$3,"掩码:"$5,"广播地址:"$7}'

理解pattern

正则与逻辑

比较符号说明
>小于
<大于
>=小于等于
<=大于等于
&&
~正则匹配(包含)
!~正则匹配(不包含)
# 使用空格做分隔符,匹配aa开头的行输出行号(匹配到新行的行号)
awk '/^aa/{print NR}' awk.txt# 输出第2个字段大于第1个字段的行
awk '$2 > $1{print $0}' awk.txt# 打印最后一个字段包含bo的行
awk '$NF ~ /bo/{print $0}' awk.txt
# 打印最后一个字段不包含bo的行
awk '$NF !~ /bo/{print $0}' awk.txt# 打印字段数为3的行
awk 'NR == 3{print $0}' awk.txt# 打印第1个字段是11或者bb的行,注意字符串类型加双引号
awk '$1==11 || $1=="bb"{print $0}' awk.txt# 打印第1个字段是11并且第2个字段是22的行
awk '$1==11 && $2==22{print $0}' awk.txt# 查看2到4行的第1个字段
awk '{if(NR>=2 && NR<=5) print $1}' awk.txt

算术

符号说明
+
-
*
/
%求余
awk '$1 + $2 > 2{print $0}' awk.txt
awk '$1 * $2 > 2{print $0}' awk.txt# 打印偶数行
awk 'NR % 2 == 0{print $0}' awk.txt# 打印奇数行
awk 'NR % 2 == 1{print $0}' awk.txt

printf

格式符号说明
%cASCII字符
%d10进制整数,有符号
%u10进制整数,无符号
%e科学计数法
%f浮点数
%o八进制
%c单字符
%s字符串
%x十六进制值
%g自适应
-左对齐修饰符
#8进制加前缀0,16进制加前缀0x
+显示使用d 、e 、f和g转换的整数时,加上正负号+或-
0用0填充,默认空白字符,数字右对齐生效
echo "888888 16 55" | awk '{printf("科学:%e\n8进制:%o\n8进制:%#o\n16进制:%x\n16进制:%#x\n",$1,$2,$2,$3,$3)}'# printf的换行要自己加
awk '{printf("文件名:%10s,行号:%s,列数:%s,内容:%s\n",FILENAME,NR,NF,$0)}' awk.txtawk '{ print "第1个字段: " $1 "\t\t最后一个字段:" $NF }' awk.txtawk '{printf "%10s\n",$1}' awk.txt
awk '{printf "%-10s\n",$1}' awk.txt
awk '{printf "%010d\n",$1}' awk.txt

Linux awk命令 printf函数

if else for while

# 语句用{}
awk '{if($1>$2){print "大于"}else{print "小于或等于"}}' awk.txt# 打印所有字段
awk '{for(i=1;i<=NF;i++){print $i}}' awk.txt
awk '{i=1; while(i<NF){print $i;i++}}' awk.txtawk '{if(NR%2==0){print "-----"}print $0}' awk.txt# 输出文件2到5行
awk '{if(NR>=2 && NR<=5) print $0}' awk.txt 

BEGIN END

注意是大写的BEGIN END

# BEGIN最先执行,END最后执行
awk 'BEGIN {print "执行begin语句"}  {print $1","$NF} END {print "执行end语句"}' awk.txt# 多条语句;分割
awk 'BEGIN{num=0;a+=5;print a}'# 支持正则
awk 'BEGIN{str="aa100bbcc";if(str~/100/) {print "字符串包含数字100"}}'# echo不能省略,因为awk默认需要文件,这里echo没有输入,使用begin中初始化的变量
echo|awk 'BEGIN{str="bb100aaa"}str~/100/{print "字符串包含数字100"}END{print "end"}'# 支持三目运算符
awk 'BEGIN{num=200;print num==200?"状态码正常":"状态码错误"}'# 可以通过FS变量来指定分隔符
awk 'BEGIN{FS=":"}{print NF}' awk.txt
awk 'BEGIN{FS=":";OFS="#"}{print $1,$2}' awk.txt # 统计第1个字段等于11的行数
awk 'BEGIN {count=0;} {if($1==11){count=count+1};print $0} END{print "第1个字段是11行数:",count}' awk.txt

next(跳过行)

next表示跳过行

# 打印偶数行,跳过奇数行
awk 'NR%2==1{next}{print NR,$0;}' awk.txt# 将11开头的行缓存拼接到后面行的前面
awk '/^11/{cache=$0;next;}{print cache"####"$0;}' awk.txt# 只拼接到下1行
awk '/^11/{cache=$0"####";next;}{print cache$0;cache=""}' awk.txt

Linux awk命令next

重定向输出到文件

# 覆盖原文件
echo | awk '{printf("hello word!\n啊哈\n") > "awk-data.txt"}'
# 在原文件上追加内容
echo | awk '{printf("hello word\n娘子\n") >> "awk-data.txt"}'

字符串函数

替换函数

函数说明
gsub(r,s)在整个$0中用s代替r
gsub(r,s,t)在整个t中用s替代r
sub(r,s)用$0中最左边最长的子串代替s
substr(s,p)返回字符串s中从p开始的后缀部分
substr(s,p,n)返回字符串s中从p开始长度为n的后缀部分

拆分与查找函数

函数说明
index(s,t)返回s中字符串t的第1个位置,索引从1开始,如果没有找到返回0
match(s,r)测试s是否包含匹配r的字符串,返回第1个匹配位置,没有匹配则为0
split(s,a,fs)在fs上将s分成序列a
sprint(fmt,exp)经fmt格式化后的exp

其他字符串函数

函数说明
length(s)返回s字符长度
blength(s)返回s字节长度
tolower(s)转换为小写字母
toupper(s)转换为大写字母

字符串函数示例

# 打印长度和匹配aa的位置
awk '{print length($0),match($0,"aa")}' awk.txt# 将aa替换为aa-aa
awk '{gsub("aa","aa-aa");print $0}' awk.txt# 用[0-9]+在content匹配,并用####替换
awk 'BEGIN{content="what are word 99 啊哈 100 娘子 88";gsub(/[0-9]+/,"####",content);print content}'# 索引位置从1开始
awk 'BEGIN{content="what are word 99 啊哈 100 娘子 88";print index(content,"what")}'
# 返回的是第1个位置
awk 'BEGIN{content="what are word 99 啊哈 100 娘子 88";print index(content,"are")}'
# 没找到返回0
awk 'BEGIN{content="what are word 99 啊哈 100 娘子 88";print index(content,"where")}'# 索引位置从1开始
awk 'BEGIN{content="what are word 99 啊哈 100 娘子 88";print match(content,"what")}'
# 返回的是第1个位置
awk 'BEGIN{content="what are word 99 啊哈 100 娘子 88";print match(content,"are")}'
# 没找到返回0
awk 'BEGIN{content="what are word 99 啊哈 100 娘子 88";print match(content,"where")}'# 从第5个字符开始,截取6个字符
awk 'BEGIN{content="what are word 99 啊哈 100 娘子 88";print substr(content,5,6);}'# 用空格拆分content,然后打印数组长度和数组
awk 'BEGIN{content="what are word 99 啊哈 100 娘子 88";split(content,resultArray," ");print length(resultArray);for(k in resultArray){print k,resultArray[k];}}'
# 默认就是使用空格拆分,所以可以省略第3个参数
awk 'BEGIN{content="what are word 99 啊哈 100 娘子 88";split(content,resultArray);print length(resultArray);for(k in resultArray){print k,resultArray[k];}}'

Linux awk命令字符串函数

算术函数

函数说明
atan2(y,x)y/x的反正切
cos(x)x的余弦;x 是弧度
sin(x)x的正弦;x 是弧度
exp(x)x幂函数
log(x)x的自然对数
sqrt(x)x平方根
int(x)x取整
rand()生成随机数n,0 <= n < 1
awk 'BEGIN{srand();num=100*rand();print num}'
awk 'BEGIN{srand();num=int(100*rand());print num}'
awk 'BEGIN{srand();num=sqrt(16);print num}'

其他函数

函数说明
system()调用系统命令
mktime()生成时间
strftime()格式化时间输出,将时间戳转为时间字符串
systime()得到时间戳,秒
close()关闭流,通常和getline结合使用
getline从标准输入、重定向、管道、文件等输入流获取数据

系统调用(system)

awk中可以使用system()来调用系统命令

# 创建第1个字段为文件名的txt文件
awk '{system("touch "$1".txt")}' awk.txt

Linux awk命令system函数
用awk命令来执行文件中的所有awk命令:

awk 'BEGIN{print "脚本命令执行开始"}/^awk/{print "执行命令:"$0;system($0)}END{print "\n脚本命令执行结束"}' awk-sh.txt

Linux awk命令执行awk命令

时间与格式化(mktime systime strftime)

更符合中国习惯格式:

格式说明
%Y4位年(2024)
%y2位年(24)
%m数字月份
%d几号,03表示3号
%e几号,3表示3号
%H24小时,16表示下午4点
%M分钟
%S
%D月/日/年,11/03/24
%y2位年(24)

西方格式习惯:

格式说明
%c本地日期和时间,Wed 01 Jan 2025 11:59:59 PM CST
%I12小时,04,可能是早上4点,也可能是下午4点
%p12小时表示法(AM/PM)
%b月缩写(Nov)
%B月(November)
%j从1月1日起一年中的第几天
%w星期几数字(星期天是0)
%A星期几(Sunday)
%U年中的第几个星期(星期天作为一个星期的开始)
%W年中的第几个星期(星期一作为一个星期的开始)
%x重新设置本地日期
%X重新设置本地时间
%Z时区
%%百分号(%)
# 打印当前时间戳,10位、秒
awk 'BEGIN{now=systime();print now}'# 根据时间创建时间戳:年月日时分秒 yyyy MM dd HH mm ss
awk 'BEGIN{time=mktime("2025 01 01 23 59 59");print time}'# 时间戳不好看,格式化一下
awk 'BEGIN{time=mktime("2025 01 01 23 59 59");print strftime("%c",time)}'# 还不好看,在简化一下
awk 'BEGIN{time=mktime("2025 01 01 23 59 59");print strftime("%D",time)}'# 还不好看,自定义一下
awk 'BEGIN{time=systime();print strftime("%Y-%m-%d %H:%M:%S",time)}'# 计算一下到元旦还有多少天
awk 'BEGIN{time1=mktime("2025 01 01 00 00 00");time2=systime();print int((time1-time2)/(24 * 3600))}'

Linux awk命令时间函数

读取流数据,关闭流(getline close)

awk 'BEGIN{ "date" | getline time; print time }'
awk 'BEGIN{ "date" | getline time; split(time,times); for(t in times){print t,times[t]}}'# getline 没有参数默认赋值个$0,print没有变量,默认输出$0
awk 'BEGIN{ while( "ls" | getline) print}'
awk 'BEGIN{ while( "ls" | getline) print $0}'# NF也会被赋值,注意不能使用别名如ll
awk 'BEGIN{ while( "ls -l" | getline) print NF,NR,FNR}'# 管道方式
awk 'BEGIN{while("cat /home/ubuntu/awk.txt"|getline){print NF,NR,FNR};close("/home/ubuntu/awk.txt");}'# 重定向方式
awk 'BEGIN{while(getline < "/home/ubuntu/awk.txt"){print NF,NR,FNR};close("/home/ubuntu/awk.txt");}'# 从标准输入获取
awk 'BEGIN{print "标准输入值:";getline value;print value;}'

实例

与ss、netstat结合使用,查看IP 端口

# 当前tcp连接的打印ip端口
netstat -an | awk '/tcp/{print $4}'# 只打印端口
netstat -an | awk '/tcp/{print $4}' | awk -F: '{print $NF}'# 去重之前要先排序,因为uniq只去相邻重复的数据
netstat -an | awk '/tcp/{print $4}' | awk -F: '{print $NF}' | sort -n | uniq# 打印本地监听的ip和端口
ss -tunl | awk '/tcp/{print $5}'
# 本地ip都是localhost,我们通常只关心端口
ss -tunl | awk '/tcp/{print $5}' | awk -F: '{print $NF}'# 查看所有tcp的本地连接与远程连接
ss | awk '/tcp/{print $5,$6}'

统计tcp连接中状态数量

# 查看TIME-WAIT数量
ss -a | awk 'BEGIN {count=0;} $1=="tcp" && $2=="TIME-WAIT"{count++}END{print "TIME-WAIT数量:",count}'# 利用数组查看不同状态的数量
ss -a|awk '/^tcp/{++s[$2]}END{for(a in s)print a,s[a]}'

统计访问日志中404的数量

# 先看一下是否匹配正确
head server_access_log | awk '{print $9}'awk 'BEGIN {count=0;} $9==404{count++}END{print "404数量:",count}' server_access_log

查看本机ip地址

ifconfig | grep inet | awk '{print $2}'

统计文件夹下文件大小

# 统计某个文件夹下的文件占用的字节数
ll | awk 'BEGIN {size=0;} {size=size+$5;} END{print "文件夹下文件总大小:",size}'# M单位换算
ll | awk 'BEGIN{size=0;} {size=size+$5;} END{print "文件夹下文件总大小:",size/1024/1024,"M"}'  

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

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

相关文章

【Android】组件化开发入门

文章目录 引入组件是什么?为什么使用组件化开发?什么是模块化&#xff0c;组件化&#xff0c;插件化&#xff1f;常见实现 组件分层创建module 组件单独调试配置组件工程类型配置组件ApplicationId和AndroidManifest文件 引入 组件是什么? 组件&#xff08;Component&#…

MySQL数据库基础(一) MySQL安装及数据类型

目录 一、MySQL数据裤简介 二、MySQL数据的安装 2.1、MySQL安装 2.2、修改MySQL密码登录策略 三、数据库基础管理 3.1、连接方式及数据储存流程 3.2、库管理命令 3.3、表管理命令 3.4、记录管理命令 四、MySQL数据类型 4.1、常见信息种类 4.2、字符型 4.3、数值型 4.4、日期时间…

云原生+AI核心技术&最佳实践

以下内容是我在陕西理工大学2023级人工智能专业和网络专业的演讲内容&#xff0c;分享给大家。 各位老师、同学们&#xff0c;大家好啊&#xff01;能在这里跟大家一起聊聊咱们计算机专业那些事儿&#xff0c;我真的觉得超级兴奋&#xff01; 首先&#xff0c;自我介绍一下&am…

Qt QCustomplot 在采集信号领域的应用

文章目录 一、常用的几种开源库:1、QCustomPlot:2、QChart:3、Qwt:QCustomplot 在采集信号领域的应用1、应用实例时域分析频谱分析2.数据筛选和处理其他参考自然界中的物理过程、传感器和传感器网络、电路和电子设备、通信系统等都是模拟信号的来源。通过可视化模拟信号,可以…

C++11的简介

杀马特主页&#xff1a;羑悻的小杀马特.-CSDN博客 ------ ->欢迎阅读 欢迎阅读 欢迎阅读 欢迎阅读 <------- 目录 一列表初始化的变化&#xff1a; 二左右值即各自引用的概念&#xff1a; 2.1左右…

大模型的常用指令格式 --> ShareGPT 和 Alpaca (以 llama-factory 里的设置为例)

ShareGPT 格式 提出背景&#xff1a;ShareGPT 格式起初来自于用户在社交平台上分享与聊天模型的对话记录&#xff0c;这些记录涵盖了丰富的多轮对话内容。研究者们意识到&#xff0c;这类真实的对话数据可以帮助模型更好地学习多轮对话的上下文保持、回应生成等能力。因此&…

5G时代已来:我们该如何迎接超高速网络?

内容概要 随着5G技术的普及&#xff0c;我们的生活似乎变得更加“科幻”了。想象一下&#xff0c;未来的智能家居将不仅仅是能够听你说“开灯”&#xff1b;它们可能会主动询问你今天心情如何&#xff0c;甚至会推荐你一杯“维他命C芒果榨汁”&#xff0c;帮助你抵御夏天的炎热…

Unity SRP学习笔记(二)

Unity SRP学习笔记&#xff08;二&#xff09; 主要参考&#xff1a; https://catlikecoding.com/unity/tutorials/custom-srp/ https://docs.unity.cn/cn/2022.3/ScriptReference/index.html 中文教程部分参考&#xff08;可选&#xff09;&#xff1a; https://tuncle.blog/c…

【JavaEE初阶 — 多线程】Thread类的方法&线程生命周期

目录 1. start() (1) start() 的性质 (2) start() 和 Thread类 的关系 2. 终止一个线程 (1)通过共享的标记结束线程 1. 通过共享的标记结束线程 2. 关于 lamda 表达式的“变量捕获” (2) 调用interrupt()方法 1. isInterrupted() 2. currentThread() …

粤荣学校与亲邻家政达成合作,创造双向人才输送机制

原标题&#xff1a;超过大学生月薪&#xff01;粤荣学校与亲邻家政达成合作&#xff0c;创造双向人才输送机制&#xff0c;解决中年人就业难题&#xff01; 广州市白云区粤荣职业培训学校余智强校长与广州亲邻家政服务有限公司朱利生经理于2024年11月8日下午共同签署了一份重要…

【MacOS实操】如何基于SSH连接远程linux服务器

MacOS上远程连接linux服务器&#xff0c;可以使用ssh命令pem秘钥文件连接。 一、准备pem秘钥文件 如果已经有pem文件&#xff0c;则跳过这一步。如果手上有ppk文件&#xff0c;那么需要先转换为pem文件。 macOS 的默认 SSH 客户端不支持 PPK 格式&#xff0c;你需要将 PPK 文…

parseInt 是一个内置的 JavaScript 函数,用于将字符串转换为整数。

parseInt(options.checkNumber, 10) 中的 10 表示将字符串转换为十进制整数。 解释 parseInt 函数&#xff1a; parseInt 是一个内置的 JavaScript 函数&#xff0c;用于将字符串转换为整数。它有两个参数&#xff1a; 第一个参数是要转换的字符串。第二个参数是转换时使用的基…

鸿蒙ArkTS中的布局容器组件(Scroll、List、Tabs)

1、Scroll组件 Scroll组件是一个可滚动的容器组件&#xff0c;用于在子组件的布局尺寸超过父组件尺寸时提供滚动功能。它允许在其内部容纳超过自身显示区域的内容&#xff0c;并通过滚动机制来查看全部内容。这对于显示大量信息&#xff08;如长列表、长篇文本或大型图像等&…

ElasticSearch备考 -- Manage the index lifecycle (ILM)

一、题目 在集群中&#xff0c;数据首先分布在data_hot节点&#xff0c;rollover 设置max_age:3d, max_docs:5,max_size:50gb, 优先级为100。 max_age:15s, forcemarge 段合并&#xff0c;数据迁移到data_warm节点&#xff0c; 副本数为0&#xff0c;优先级为50 max_age:30s, 数…

信息安全工程师(81)网络安全测评质量管理与标准

一、网络安全测评质量管理 遵循标准和流程 网络安全测评应严格遵循国家相关标准和流程&#xff0c;确保测评工作的规范性和一致性。这些标准和流程通常包括测评方法、测评步骤、测评指标等&#xff0c;为测评工作提供明确的指导和依据。 选择合格的测评团队 测评团队应具备相关…

使用 Python 构建代理池并测试其有效性

前言 在本篇文章中,我们将介绍如何通过 Python 脚本来构建一个代理池,并且对这些代理的有效性进行测试。整个流程涵盖了从网站抓取代理信息、存储这些信息以及异步地测试代理的有效性。这个脚本可以用作网络爬虫或其他需要使用代理服务器的应用的基础工具。 目标网站 一、…

设计者模式之策略模式

前言 在软件构建过程中&#xff0c;某些对象使用的算法可能多种多样&#xff0c;经常改变&#xff0c;如果将这些算法都写在对象中&#xff0c;将会使对象变得异常复杂&#xff1b;而且有时候支持不频繁使用的算法也是一个性能负担。 如何在运行时根据需要透明地更改对象的算…

tomcat 开启远程debug模式

1.修改位置 CATALINA_OPTS"-Xdebug -Xrunjdwp:transportdt_socket,address*:8000,servery,suspendn"2.修改环境变量的方式 apache-tomcat-9.0.86/bin/setenv.sh export JAVA_HOME/opt/jdk1.8.0_171 export CATALINA_HOME/opt/apache-tomcat-9.0.86 export JAVA_OP…

AI辅助论文写作的利弊

人工智能的时代&#xff0c;AI从自动驾驶到智能家居&#xff0c;慢慢的都成为了我们生活中的一部分。可当AI被放到学术研究领域&#xff0c;特别是撰写论文这一问题上时&#xff0c;却出现了大量的争议&#xff0c;认为AI撰写论文会削弱该有的批判性思维能力。那不用AI撰写论文…

vue3+less使用主题定制(多主题定制)可切换主题

假如要使用两套主题&#xff1a;蓝色、红色 例如&#xff1a; 首先确保自己的vue3项目有less&#xff0c;这边不多做接入解释 1、在src目录下建一个styles文件夹&#xff0c;在syles文件夹下面新建两个less文件&#xff1a;theme.less和variables.less&#xff1b; theme.le…