Shell基础(六):使用awk提取文本awk处理条件awk综合脚本应用awk流程控制awk扩展应用百川汇海

本案例要求使用awk工具完成下列过滤任务:

1>练习awk工具的基本用法2>提取本机的IP地址、根分区使用率3>格式化输出/etc/passwd文件中的用户名、UID、宿主目录信息

格式化输出passwd文件内容时,要求第一行为列表标题,最后一行提示一共已处理文本的总行数,如下图所示。

步骤:

步骤一:awk文本过滤的基本用法

1)基本操作方法

格式:awk[选项]'[条件]{编辑指令}'文件

其中,print是最常用的编辑指令;若有多条编辑指令,可用分号分隔。

处理文本时,若未指定分隔符,则默认将空格、制表符等作为分隔符。

直接过滤文件内容:

[root@svr5~]#awk'{print$1,$2}'/etc/rc.local//输出文件的第1、2列#!/bin/sh##This#You#wanttouch/var/lock/subsys/local

结合管道过滤命令输出:

[root@svr5~]#uname-a//正常的完整输出Linuxsvr5.tarena.com2.6.18-348.el5#1SMPWedNov2821:22:00EST2012x86_64x86_64x86_64GNU/Linux[root@svr5~]#uname-a|awk'{print$1,$3,$12}'//输出第1、3、12字段Linux2.6.18-348.el5x86_64

2)选项-F可指定分隔符

截取/etc/passwd文件的前7行,用来创建一个测试文件,操作如下:

[root@svr5~]#head-7/etc/passwd>passwd.txt[root@svr5~]#catpasswd.txtroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

输出passwd.txt文件中以分号分隔的第1、7个字段,显示的不同字段之间以逗号隔开,操作如下:

[root@svr5~]#awk-F:'{print$1","$7}'passwd.txtroot,/bin/bashbin,/sbin/nologindaemon,/sbin/nologinadm,/sbin/nologinlp,/sbin/nologinsync,/bin/syncshutdown,/sbin/shutdown

或者:

[root@svr5~]#awk-F":"'{print$1","$7}'passwd.txtroot,/bin/bashbin,/sbin/nologindaemon,/sbin/nologinadm,/sbin/nologinlp,/sbin/nologinsync,/bin/syncshutdown,/sbin/shutdown

awk还识别多种单个的字符,比如以“:”或“/”分隔,输出第1、10个字段:

[root@svr5~]#awk-F[:/]'{print$1,$10}'passwd.txtrootbashbinnologindaemonnologinadmsbinlpsyncsyncshutdownshutdown

输出每次处理的行号,以及当前行以“:”分隔的字段个数:

[root@svr5~]#awk-F:'{printNR,NF}'passwd.txt17273747576777

3)awk处理的时机

awk会逐行处理文本,支持在处理第一行之前做一些准备工作,以及在处理完最后一行之后做一些总结性质的工作。在命令格式上分别体现如下:

行前处理,BEGIN{}逐行处理,{}行后处理,END{}

上述编辑指令段可以包含在一对单引号内,比如:

awk[选项]'BEGIN{编辑指令}{编辑指令}END{编辑指令}'文件

只做预处理的时候,可以没有操作文件,比如:

[root@svr5~]#awk'BEGIN{A=1024;printA*2.56}'2621.44

[root@svr5~]#awk'BEGIN{x=0}/\

当然,这个例子比较简单(效果与egrep-c'\

步骤二:利用awk提取本机的IP地址、根分区使用率

1)提取IP地址

分步实现的思路及操作参考如下——

通过ifconfigeth0查看网卡信息,其中包括IP地址:

[root@svr5~]#ifconfigeth0eth0Linkencap:EthernetHWaddr00:0C:29:82:09:E9inet192.168.4.4Bcast:192.168.4.255Mask:255.255.255.0inet6addr:fe80::20c:29ff:fe82:9e9/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:358524errors:0dropped:0overruns:0frame:0TXpackets:230638errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RXbytes:44470760(42.4MiB)TXbytes:64236279(61.2MiB)

结合grep获得包含IP地址的那一行:

[root@svr5~]#ifconfigeth0|grep"inet"inetaddr:192.168.4.4Bcast:192.168.4.255Mask:255.255.255.0

再结合awk过滤出第2列:

[root@svr5~]#ifconfigeth0|grep"inet"|awk'{print$2}'192.168.4.4

2)提取根分区使用率

通过df命令查看根分区的使用情况,其中包括使用率:

[root@svr5~]#df-hT/文件系统类型容量已用可用已用%挂载点/dev/sda2ext319G7.2G11G40%/

输出上述结果中最后一行的第6列:

[root@svr5~]#df-hT/|tail-1|awk'{print$6}'40%

步骤三:格式化输出/etc/passwd文件

1)任务需求及实现思路分析

根据任务要求的结果,输出的内容包括三个部分:列表头、用户信息、列表尾。

由于/etc/passwd文件中的用户记录是单一的以“:”分隔,而且恰好awk本身就已经支持“前、中、后”三段式处理,所以用awk处理是再合适不过了。通过awk的内置变量NR即可获得处理的记录行数,因此只要设置正确的输出即可。

2)根据实现思路编写、验证awk过滤语句

输出信息时,可以使用“\t”显示Tab制表位:

[root@svr5~]#awk-F:'BEGIN{print"User\tUID\tHome"}\{print$1"\t"$3"\t"$6}END{print"Total"NR"lines."}'/etc/passwdUserUIDHomeroot0/rootbin1/bindaemon2/sbinadm3/var/admlp4/var/spool/lpdsync5/sbin....iamkiller1234/opt/.private/iamkillernsd0010/home/nsd001nsd0021236/home/nsd002nsd0031237/home/nsd003postfix89/var/spool/postfixTotal67lines.

二、awk处理条件

本案例要求使用awk工具完成下列过滤任务,注意awk处理条件的设置:

1>列出UID间于501~505的用户详细信息2>输出/etc/hosts文件内以127或192开头的记录3>列出100以内整数中7的倍数或是含7的数

步骤一:认识awk处理条件的设置

创建测试文件passwd.txt文件:

1)使用正则表达式设置条件

输出其中以bash结尾的完整记录:

[root@svr5~]#awk-F:'/bash$/{print}'passwd.txtroot:x:0:0:root:/root:/bin/bash

输出以a、b、c或d开头的用户名、宿主目录:

[root@svr5~]#awk-F:'/^[a-d]/{print$1,$6}'passwd.txtbin/bindaemon/sbinadm/var/adm

[root@svr5~]#awk-F:'/^a|nologin$/{print$1,$7}'passwd.txtbin/sbin/nologindaemon/sbin/nologinadm/sbin/nologinlp/sbin/nologin

输出其中宿主目录以bin结尾(对第6个字段做~匹配)的用户名、宿主目录信息:

[root@svr5~]#awk-F:'$6~/bin$/{print$1,$6}'passwd.txtbin/bindaemon/sbinsync/sbinshutdown/sbin

[root@svr5~]#awk-F:'$7!~/nologin$/{print$1,$7}'passwd.txtroot/bin/bashsync/bin/syncshutdown/sbin/shutdown

2)使用数值/字符串比较设置条件

输出第3行(行号NR等于3)的用户记录:

[root@svr5~]#awk-F:'NR==3{print}'passwd.txtdaemon:x:2:2:daemon:/sbin:/sbin/nologin

输出奇数行(行号NR除以2余数为1)的用户记录:

[root@svr5~]#awk-F:'NR%2==1{print}'passwd.txtroot:x:0:0:root:/root:/bin/bashdaemon:x:2:2:daemon:/sbin:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

输出偶数行(行号NR除以2余数为0)的用户记录:

[root@svr5~]#awk-F:'NR%2==0{print}'passwd.txtbin:x:1:1:bin:/bin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/sync

输出前3行文本:

[root@svr5~]#awk-F:'NR<=3{print}'passwd.txtroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin

输出从第5行开始到文件末尾的所有行:

[root@svr5~]#awk-F:'NR>=5{print}'passwd.txtlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

输出用户名为“sync”的行:

[root@svr5~]#awk-F:'$1=="sync"{print}'passwd.txtsync:x:5:0:sync:/sbin:/bin/sync

[root@svr5~]#awk-F:'$1==ENVIRON["USER"]{print$1,$6,$7}'passwd.txtroot/root/bin/bash

3)逻辑测试条件

输出第3~5行文本:

[root@svr5~]#awk-F:'NR>=3&&NR<=5{print}'passwd.txtdaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

严谨一点可以写成:

[root@svr5~]#awk-F:'(NR>=3)&&(NR<=5){print}'passwd.txtdaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

输出第3行和第5行文本:

[root@svr5~]#awk-F:'NR==3||NR==5{print}'passwd.txtdaemon:x:2:2:daemon:/sbin:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@svr5~]#awk-F:'$7!~/nologin$/||$1~/^[ad]/{print}'passwd.txtroot:x:0:0:root:/root:/bin/bashdaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

输出UID小于3或者UID是偶数的用户记录:

[root@svr5~]#awk-F:'$3<3||$3%2==0{print}'passwd.txtroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

4)数学运算

以统计passwd.txt文件中以“:”分隔的总字段个数,需要每处理一行时将当前行的字段数(内置变量NF)计和,因此可在BEGIN时定义一个初始变量,过程称求和,最后在END时输出结果。

[root@svr5~]#awk-F:'BEGIN{x=0}\{x+=NF}END{print"Total"x"fields."}'passwd.txtTotal49fields.

步骤二:完成任务要求的awk过滤操作

1)列出UID间于501~505的用户详细信息:

[root@svr5~]#awk-F:'$3>=501&&$3<=505{print}'/etc/passwdhunter:x:501:501::/home/hunter:/bin/bashvina:x:502:502::/home/vina:/bin/bashkdev:x:503:503::/home/kdev:/bin/bashzengye:x:504:504::/home/zengye:/bin/bashstu01:x:505:1201::/tech/nsdhome/stu01:/bin/bash

2)输出/etc/hosts映射文件内以127或者192开头的记录:

[root@svr5~]#awk-F:'/^127|^192/{print}'/etc/hosts127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4192.168.4.5svr5.tarena.comsvr5

3)列出100以内整数中7的倍数或是含7的数:

此操作无处理文件,正常思路应该是用Shell循环来完成;因为要求用awk来实现,如果不用循环,则根据逐行处理的思路,应该提供一个100行的文本对象,然后将行号作为处理的整数,逐个判断并输出即可。

利用seq命令可生成1-100的整数序列,比如:

[root@svr5~]#seq10012345678910....

结合管道交给awk处理,可以简化实现步骤。针对本任务而言,行号与每行的实际文本值是一致的,那么根据NR或者$0行值进行判断都是可以的。输出100以内7的倍数或是包含7的数:

[root@svr5~]#seq100|awk'NR%7==0||NR~/7/{print}'7141721272835374247....

[root@svr5~]#seq100|awk'$0%7==0||$0~/7/{print}'7141721272835374247....

三、awk综合脚本应用

本案例要求编写脚本getupwd-awk.sh,实现以下需求:

步骤一:任务需求及思路分析

编写getupwd-awk.sh脚本的任务要求如下:

步骤二:根据实现思路编写脚本

复制原getupwd.sh脚本,生成getupwd-awk.sh:

[root@svr5~]#catgetupwd.sh//确认原脚本内容#/bin/bash>/tmp/getupwd.log##创建空文件sed-n'/:\/bin\/bash$/w/tmp/urec.tmp'/etc/passwd##提取符合条件的账号记录UNUM=$(egrep-c'.'/tmp/urec.tmp)##取得记录个数while[${i:=1}-le$UNUM]##从第1行开始,遍历账号记录doUREC=$(sed-n"${i}p"/tmp/urec.tmp)##取指定行数的记录NAME=${UREC%%:*}##截取用户名(记录去尾)PREC=$(sed-n"/^$NAME:/p"/etc/shadow)##查找与用户名对应的密码记录PASS=${PREC#*:}##掐头PASS=${PASS%%:*}##去尾,只留下密码记录echo"$NAME-->$PASS">>/tmp/getupwd.log##保存结果leti++##自增1,转下一次循环done/bin/rm-rf/tmp/urec.tmp##删除临时文件echo"用户分析完毕,请查阅文件/tmp/getupwd.log"##完成后提示[root@svr5~]#cpgetupwd.shgetupwd-awk.sh//复制为新脚本文件

修改新脚本文件,内容参考如下:

[root@svr5~]#vimgetupwd-awk.sh#/bin/bash##创建空文件>/tmp/getupwd.log##提取用户名列表awk-F:'/:\/bin\/bash$/{print$1}'/etc/passwd>/tmp/users.tmp##通过for循环遍历用户名、查询密码记录,保存结果forNAMEin$(cat/tmp/users.tmp)dogrep"^$NAME:"/etc/shadow|awk-F:'{print$1"-->"$2|\"cat>>/tmp/getupwd.log"}'/etc/shadowdoneecho"用户分析完毕,请查阅文件/tmp/getupwd.log"##完成后提示[root@svr5~]#chmod+xgetupwd-awk.sh

步骤三:验证、测试脚本

[root@svr5~]#./getupwd-awk.sh用户分析完毕,请查阅文件/tmp/getupwd.log[root@svr5~]#head-5/tmp/getupwd.logroot-->$6$IWgMYmRACwdbfwBo$dr8Yn983nswiJVw0dTMjzbDvSLeCd1GMYjbvsDiFEkL8jnXOLcocBQypOCr4C6BRxNowIxjh6U2qeFU0u1LST/zengye-->$6$Qb37LOdzRl5995PI$L0zTOgnhGz8ihWkW81J.5XhPp/l7x2./Me2ag0S8tRndCBL9nIjHIKkUKulHxJ6TXyHYmffbVgUT6pbSwf8O71clamav-->!!mysql-->!!abc-->!!....

四、awk流程控制

本案例要求了解awk的流程控制操作,可自行设置awk语句来有验证以下操作:

1>if分支结构(双分支、多分支)2>while循环结构3>break、continue等其他控制语句

步骤一:awk过滤中的if分支结构

1)单分支

统计/etc/passwd文件中UID小于或等于500的用户个数:

[root@svr5~]#awk-F:'BEGIN{i=0}{if($3<=500){i++}}END{printi}'/etc/passwd39

统计/etc/passwd文件中UID大于500的用户个数:

[root@svr5~]#awk-F:'BEGIN{i=0}{if($3>500){i++}}END{printi}'/etc/passwd28

[root@svr5~]#awk-F:'BEGIN{i=0}{if($7~/bash$/){i++}}END{printi}'\/etc/passwd29

[root@svr5~]#awk-F:'BEGIN{i=0}{if($7!~/bash$/){i++}}END{printi}'\/etc/passwd38

2)双分支

分别统计/etc/passwd文件中UID小于或等于500、UID大于500的用户个数:

[root@svr5~]#awk-F:'BEGIN{i=0;j=0}{if($3<=500){i++}else{j++}}END{printi,j}'/etc/passwd3928

[root@svr5~]#awk-F:'BEGIN{i=0;j=0}{if($7~/bash$/){i++}else{j++}}\END{printi,j}'/etc/passwd2938

3)多分支

[root@svr5~]#awk-F:'BEGIN{i=0;j=0;k=0}{if($7~/bash$/){i++}\elseif($7~/nologin$/){j++}else{k++}}END{printi,j,k}'/etc/passwd29335

步骤二:awk过滤中的while循环结构

1)while循环

统计/etc/passwd文件内“root”出现的次数。

——分析:以“:”或“/”做分隔,针对每一行的每一列进行比对,如果包含“root”,则次数加1。其中,逐行处理直接由awk完成,逐列处理交给while循环,通过i变量依次取$1、$2、……、$NF进行检查;变量j在预处理时赋值0,没匹配一个字段加1。

[root@svr5~]#awk-F[:/]\'BEGIN{j=0}\{i=1}{while(i<=NF){if($i~/root/){j++};i++}}\END{printj}'/etc/passwd4

此例仅为说明while循环的用法。

实际应用时,上述操作可以简单处理,可通过命令替换将文件内容赋值给一个变量(变为一行文本),然后针对此变量值以目标字符串“root”作为分隔,获取总字段数-1即可得目标字符串的总数量:

[root@svr5~]#echo$(cat/etc/passwd)|awk-F"root"'{printNF-1}'4

五、awk扩展应用

本案例要求使用awk工具完成下列两个任务:

方案:

1)awk统计Web访问排名

在分析Web日志文件时,每条访问记录的第一列就是客户机的IP地址,其中会有很多重复的IP地址。因此只用awk提取出这一列是不够的,还需要统计重复记录的数量并且进行排序。

通过awk提取信息时,利用IP地址作为数组下标,每遇到一个重复值就将此数组元素递增1,最终就获得了这个IP地址出现的次数。

步骤一:统计Web访问量排名

分步测试、验证效果如下所述。

1)提取IP地址及访问量

2)对第1)步的结果根据访问量排名

附加:

awk数据过滤软件【统计功能】;类似grep【过滤一整行】

awk[选项]'条件{指令}'文件条件可以没有【默认为所有】指令可以没有【打印整行】不能条件指令都没有awk默认使用空格或Tab键作为分割符

print$0#读一行就打印当前一整行print$1#读一行就打印第一列print$2#读一行就打印第二列...printNR#读一行就打印当前行的行号printNF#读一行就打印当前行的列数#awk-F:'{printNR}'/etc/passwd#读一行就打印一次当前的行号#awk-F:'{printNF}'/etc/passwd#读一行就打印当前行所有的列数#awk-F:'{print$NF}'/etc/passwd#读一行就打印当前行最后一列

打印常量(字符串需要引号)awk'{print"dachui"}'/etc/passwd//这个文件有多少行就打印多少行的dachui#awk-F:'{print"第"NR"行","有"NF"列"}'/etc/passwd打印多少行有多少列#awk-F:'{print"第"NR"行","有"NF"列"}'/etc/passwd|head-34|tail-1只打印第34行有几列

awk'BEGIN{}条件{}END{}'文件#三个条件不一定要全有,有一个就可以所有的指令都需要放到{}里BEGIN{}里的指令,是在读取文件之前,执行1次{}里的指令,在读取文件过程中执行,执行N次END{}里的指令,是在读取文件之后,执行1次

#awk-F:'BEGIN{print"用户名\tUID\t家目录"}{print$1"\t"$2"\t"$3}END{print"总用户量:"NR}'/opt/a.txt这个可以在执行这个文本之前打印BEGIN{}、END{}里面的内容

-F指定分隔符awk-F:'{print$1}'/etc/passwd#指定':'为分隔符awk-F,'{print$1}'/etc/passwd#指定','为分隔符

awk'/正则/{指令}'文件df|awk'/\/$/{print$4}'#打印以/结尾的行的第四列

过滤查看正在占用的内存#awk'/Failed/{print$11}'/var/log/secure#过滤出尝试破解密码的IP地址#free|awk'/Mem/{print$3}'

过滤查看正在占用的CPU使用率[1分钟,5分钟,15分钟]#uptime20:43:58up24min,3users,loadaverage:0.00,0.03,0.09#uptime|awk'{print$10}'#打印5分钟的cpu使用率0.03,

awk[选项]'条件{指令}'文件

条件:1、/正则/awk'/root/'/etc/passwd

#awk-F:'/root/'/etc/passwdroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin

#awk-F:'$1~/root/'/etc/passwd#~表示正则匹配,$1表示第一列,匹配第一列里面有root的行,打印出来root:x:0:0:root:/root:/bin/bash

2、字串和数字比较==、!=、<、<=、>、>=(精确匹配)awk-F:'$1=="root"'/etc/passwd#将root用户打印出来awk-F:'$3<=10'/etc/passwd#将UID小于等于10的用户打印出来,UID<=1000即系统用户#awk-F:'$3<=10'/etc/passwd#将UID大于等于1000的用户打印出来,UID>=1000即普通用户#awk'NR==2{print}'/etc/passwd#输出第2行文本#awk'NF>=6{print}'/etc/passwd#输出列数大于或等于6的行#awk'$2!="XX"{print}'/etc/passwd#输出第2行文本不是XX的行#awk'/^(127|192)/'/etc/hosts#输出开头是127或192开头的行

3、逻辑判断&&||#awk-F:'$3>10&&$3<20'/etc/passwd#awk-F:'$3==0||$3==1000'/etc/passwd

4、算术运算能被7整除或包含7的数(1--200)#seq200|awk'$1%7==0||$1~/7/'#$1~/7/用到正则模糊匹配,这个数列只有1列所以是$1,匹配含有7的选项

awk'BEGIN{x=0;printx%8}'awk'BEGIN{x=0;printx+8}'awk'BEGIN{x=0;printx-8}'awk'BEGIN{x=0;printx*8}'awk'BEGIN{x=0;printx/8}'

awk支持if语句if(判断){指令}if(判断){指令}else{指令}if(判断){指令}elseif(){指令}

统计系统用户和普通用户分别是多少(1000)awk-F:'{}END{printx,y}'/etc/passwd#这里可以将if条件句分出来写,然后再复制进去,以防止括号太多导致错误if($3>=1000){x++}else{y++}最终结果:awk-F:'{if($3>=1000){x++}else{y++}}END{printx,y}'/etc/passwd

正则:/正则/对整行匹配$n~/正则/对某一列匹配$1~/root/对第一列匹配是否包含root

THE END
1.化学实验中过滤的基本步骤过滤的6个基本步骤以及重要的注意...化学实验中过滤的基本步骤过滤的 6个基本步骤 以及 重要的 注意事项 下载作业帮APP学习辅导没烦恼 答案解析 结果1 举报 一贴 即滤纸紧贴漏斗内壁.二低 1.滤纸边缘低于漏斗边缘. 2.液面低于滤纸边缘.三靠 1.盛混合物的烧杯紧靠玻璃棒. 2.玻璃棒下端紧靠滤纸三层处. 3.漏斗下端关口紧靠烧杯内壁.注意事项 1....https://qb.zuoyebang.com/xfe-question/question/d84eca5bfe2380c94b8e72c411d36755.html
2.Redis系列9.Redis布隆过滤器BloomFilter使用步骤 布隆过滤器 本质上 是由长度为 m 的位向量或位列表(仅包含 0 或 1 位值的列表)组成,最初所有的值均设置为 0 当我们向布隆过滤器中添加数据时,为了尽量地址不冲突,会使用多个 hash 函数对 key 进行运算,算得一个下标索引值,然后对位数组长度进行取模运算得到一个位置,每个 hash 函数都会算得一个...https://developer.aliyun.com/article/1414714
3.基于Windows微过滤驱动文件透明加解密研究AET3.1 过滤驱动模型开发步骤 微软提供的过滤驱动模型和现在的微过滤驱动模型开发过滤驱动都遵循以下几个基本步骤: (1)主要编写驱动程序中的派遣函数(dispatch functions),将驱动程序加载到目标设备对象上,拦截所能控制发往该对象的IRP。 (2)创建发往管理目标设备对象的IRP。 http://m.chinaaet.com/article/218540
4.胰岛分离与纯化技术一、大鼠、小鼠、胎鼠及成人胰岛分离纯化的基本步骤...4 大鼠胰岛细胞分离与纯化(小鼠与大鼠同)...4 胎小鼠胰岛分离...7 成人胰腺消化、胰岛分离方法...7 人胎胰岛冷冻保存方法...8 胰岛鉴定方法...https://www.360doc.cn/document/140174_312222155.html
1.自然之美人间之工地表下方的潜在宝藏地下钻井悬浮式真空过滤系统...二、地下钻井悬浮式真空过滤系统概述 在地下钻井悬浮式真空过滤系统中,通过将含有污染物和杂质的地下水流经特殊设计的过滤介质进行净化处理,从而实现对地下水质量的大幅提升。在这种系统中,主要包括三个部分:抽取部件、净化部件和排放部件。 三、中试阶段优化设计 ...https://www.pcykccynr.cn/di-tan-huan-bao/447728.html
2.生活小妙招,如何高效过滤生活用水桔子视觉–金融财经分享平台以活性炭吸附法为例,具体过滤步骤如下: 1、准备一个容器,将活性炭放入容器中,活性炭的用量根据水质情况而定,一般按照每升水使用10-20克活性炭的比例进行投放。 2、加入适量的水,使活性炭充分吸水膨胀,注意不要让水溢出容器。 3、静置一段时间,让活性炭充分吸附水中的有害物质,具体时间根据水质情况而定,一般需...http://jzyqby.com/post/33509.html
3.配置培养基的基本步骤分装完毕后,需要用棉塞堵住管口或瓶口。堵棉塞的主要目的是过滤空气,避免污染。棉塞应采用普通新鲜、干燥的棉花制作,不要用脱脂棉,以免因脱脂棉吸水使棉塞无法使用。 制作棉塞时,要根据棉塞大小将棉花铺展成适当厚度,揪取手掌心大小一块,铺在左手拇指与食指圈成的圆孔中,用右手食指插入棉花中部,同时左手食指与姆...https://www.antpedia.com/news/94/n-2462794.html
4.协同过滤算法理解协同过滤算法原理基于用户的协同过滤需要维护用户相似度矩阵以便快速的找出TopN相似用户, 该矩阵的存储开销非常大,存储空间随着用户数量的增加而增加,不适合用户数据量大的情况使用。因此很多平台初期都会采用Itemcf 2.基于物品的协同过滤(Itemcf) 基本步骤 Step1:计算物品和物品之间的相似性(共现矩阵中列与列) ...https://blog.csdn.net/chenjunheaixuexi/article/details/124822715
5.以下是自来水厂处理饮用水的基本步骤,其中可能涉及化学变化的是...以下是自来水厂处理饮用水的基本步骤,其中可能涉及化学变化的是( )A.加明矾吸附B.沉降C.过滤D.通氯气消毒https://www.zybang.com/question/abaa5765dc730c35a29cd87be1ef111d.html
6.初三的化学知识点总结31、固体配溶液的三个步骤:计算,称量,溶解。 32、浓配稀的三个步骤:计算,量取,溶解。 33、浓配稀的三个仪器:烧杯,量筒,玻璃棒。 34、三种遇水放热的物质:浓硫酸,氢氧化钠,生石灰。 35、过滤两次滤液仍浑浊的原因:滤纸破损,仪器不干净,液面高于滤纸边缘。 https://mip.oh100.com/chusan/5569324.html
7.西门子洗衣机的过滤网怎么清洗?寻找步骤如下~引言:保持洗衣机的过滤网清洁是确保洗衣机正常运行和延长使用寿命的重要步骤。作为西门子洗衣机用户,清洗过滤网是您需要掌握的基本技能之一。本文将为您介绍清洗西门子洗衣机过滤网的步骤,帮助您轻松解决这一问题。 1. 准备工作 在开始清洗过滤网之前,您需要准备以下工具和材料: ...https://www.33360.com/new/art_51716.html
8.Gmail邮箱下载有什么好的方法腾讯云开发者社区1. Gmail邮箱下载的基本步骤 首先,让我们回顾一下Gmail邮箱下载的基本步骤。要使用Gmail邮箱下载功能,您只需登录到您的Gmail账户,选择所需的邮件,然后点击下载按钮。这是最常见的方式,适用于大多数用户。 在日常使用中,Gmail邮箱下载功能对于保存重要文件、备份重要信息非常有用。通过简单的几步,您就可以轻松地将重要...https://cloud.tencent.com/developer/news/1295528
9.转贴石蜡包埋的基本步骤实验小白99 医疗行业从业者 我这也不是横裂或纵裂 这是为啥呢?怎么解决?2023-07-28IP海南海南 收藏...https://www.dxy.cn/bbs/newweb/pc/post/28916635?sf=2
10.配置并应用基本ACLAR100S,AR110S,AR120S,AR150配置基本ACL 前提条件 如果配置基于时间的ACL,则需创建生效时间段,并将其与ACL规则关联起来。具体操作请参见(可选)配置ACL的生效时间段。 背景信息 基本ACL根据源IP地址、分片信息和生效时间段等信息来定义规则,对IPv4报文进行过滤。 如果只需要根据源IP地址对报文进行过滤,可以配置基本ACL。 操作步骤 执行命令system...https://support.huawei.com/enterprise/zh/doc/EDOC1100033978/3698e3b4
11.交换机配置步骤心得:深入解析交换机的基本配置与端口聚合实验交换机是计算机网络中非常重要的设备,其通过学习和高效过滤数据帧,实现了局域网中计算机之间的通信。在网络运维中,合理配置交换机是保证网络稳定性和性能的关键一本文将分享交换机配置的基本步骤和心得,以及端口聚合配置的实验心得。 一、交换机的基本配置心得 ...https://www.eolink.com/news/post/81864.html
12.推荐工厂实习报告1、基本工艺步骤 实现氨合成的循环,必须包括如下几个步骤:氮氢原料气的压缩并补入循环系统;循环气的预热与氨的合成;氨的分离;热能的回收利用;对未反应气体补充压力并循环使用,排放部分循环气以维持循环气中惰性气体的平衡等。 (1)气体的压缩和除油 (2)气体的预热和合成 ...https://www.ruiwen.com/baogao/6689021.html
13.工厂实习总结热门1、基本工艺步骤 实现氨合成的循环,必须包括如下几个步骤:氮氢原料气的压缩并补入循环系统;循环气的预热与氨的合成;氨的分离;热能的回收利用;对未反应气体补充压力并循环使用,排放部分循环气以维持循环气中惰性气体的平衡等。 (1)气体的压缩和除油(2)气体的预热和合成 ...https://mip.jy135.com/shixizongjie/1027313.html
14.thermplan咖啡机说明书thermplan咖啡机操作指南- 如果使用过滤纸,请确保选用适合型号的规格。 2. 基本操作步骤 步骤1: [开关]: 将开关打开,并等待一段时间,直到预热指示灯亮起。 Tips: - 在第一次使用之前,建议先进行清洗操作,以去除可能存在的生产残留物。具体的清洗方法请参考使用手册。 步骤2: ...https://www.coffee.cn/blog/post/271602.html
15.医用实验化学第二部分无机化学实验在线免费阅读3.练习蒸发、结晶、过滤等基本操作,学习减压过滤的方法。 实验原理 氯化钠试剂由粗食盐提纯而得。粗食盐中除含有泥沙等不溶性杂质外,还有SO24-、Ca2+、Mg2+、K+等可溶性杂质。不溶性杂质可采用过滤的方法除去,可溶性杂质则选用适当的试剂使其生成难溶化合物后过滤除去。此方法的原理是先利用稍过量的氯化钡与粗食...https://fanqienovel.com/reader/7340934577155755070