网站怎么更新数据重庆网架加工厂

news/2025/9/26 9:10:58/文章来源:
网站怎么更新数据,重庆网架加工厂,私人订制管理中心,惠来网站建设华子目录 概念工作流程工作图流程#xff08;按行处理#xff09; awk程序执行方式1.通过命令行执行awk程序实例 2.awk命令调用脚本执行实例 3.直接使用awk脚本文件调用实例 awk命令的基本语法格式BEGIN模式与END模式实例awk的输出 记录和域#xff08;记录表示数据行#… 华子目录 概念工作流程工作图流程按行处理 awk程序执行方式1.通过命令行执行awk程序实例 2.awk命令调用脚本执行实例 3.直接使用awk脚本文件调用实例 awk命令的基本语法格式BEGIN模式与END模式实例awk的输出 记录和域记录表示数据行域表示行中的一小段概念实例使用-F参数指定域之前的分隔符默认为空格或tab语法实例 使用系统内置变量FS修改分隔符语法 NRNFFILENAME变量实例 awk变量概念内置变量实例用户自定义变量实例 awk运算符算术运算符实例 赋值运算符实例 条件运算符实例 逻辑运算符关系运算符实例 其他运算符 awk的模式关系表达式正则表达式混合模式 awk控制语句if语句实例 for循环实例 while循环实例 breakcontinue语句next语句exit 格式化输出1、格式2、format3、注意4、示例 awk数组1、索引数组2、关联数组3、循环遍历数组4、利用数组统计字符串出现次数 概念 awk是Linux以及UNIX环境中现有的功能最强大的数据处理工具awk其名称来自于它的创始人Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母awk是一种处理文本数据的编程语言适合文本处理和报表生成awk的设计使得它非常适合于处理由行和列组成的文本数据awk还是一种编程语言环境它提供了正则表达式的匹配流程控制运算符表达式变量以及函数等一系列的程序设计语言所具备的特性它从C语言中获取了一些优秀的思想按行处理 工作流程 工作图 流程按行处理 第一步自动从指定的数据文件中读取行文本第二步自动更新awk的内置系统变量的值例如列数变量NF行数变量NR行变量$0以及各个列变量$1、$2等等第三步依次执行程序中所有的匹配模式及操作第四步当执行完程序中所有的匹配模式及其操作之后如果数据文件中仍然还有读取的数据行则返回到第(1)步重复执行(1)~(4)的操作 awk程序执行方式 1.通过命令行执行awk程序 任何awk语句都由模式pattern和动作action组成 模式由一组用于测试输入行是否需要执行动作的规则条件动作包含语句函数和表达式的执行过程简言之模式决定动作何时触发和触发事件动作执行对输入行的处理 实例 [rootserver ~]# awk /行向匹配条件/{匹配完后要做的动作} 文件名[rootserver ~]# vim input.txt #点i键输入多个空行[rootserver ~]# awk /^$/{print This is a blank line.} input.txt #^$匹配空行在input.txt文本中匹配空行后输出This is a blank line. 直到处理到input.txt中的最后一行为止 This is a blank line. This is a blank line. This is a blank line. This is a blank line. This is a blank line. This is a blank line. This is a blank line.2.awk命令调用脚本执行 在awk程序语句比较多的情况下用户可以将所有的语句写在一个脚本文件中然后通过awk命令来解释并执行其中的语句。awk调用脚本的语法如下 [rootserver ~]# awk -f program-file file-f选项表示从脚本文件中读取awk程序语句program-file表示awk脚本文件名称file表示要处理的数据文件 实例 [rootserver ~]# vim scr.awk /^$/{print This is a blank line.}[rootserver ~]# awk -f scr.awk input.txt #使用命令及脚本结合的方法执行 This is a blank line. This is a blank line. This is a blank line. This is a blank line. This is a blank line. This is a blank line. This is a blank line.3.直接使用awk脚本文件调用 在上面介绍的两种方式中用户都需要输入awk命令才能执行程序。除此之外用户还可以通过类似于Shell脚本的方式来执行awk程序。在这种方式中需要在awk程序中指定命令解释器并且赋予脚本文件的可执行权限。其中指定命令解释器的语法如下 #!/bin/awk -f以上语句必须位于脚本文件的第一行通过以下命令执行awk程序 [rootserver ~]# ./script.awk file实例 [rootserver ~]# vim awktest.awk #!/bin/awk -f #注意awk脚本解释器 /^$/{print This is a blank line.}[rootserver ~]# chmod x awktest.awk #赋予执行权限 [rootserver ~]# ./awktest.awk input.txt #执行 This is a blank line. This is a blank line. This is a blank line. This is a blank line. This is a blank line. This is a blank line. This is a blank line.awk命令的基本语法 格式 [rootserver ~]# awk BEGIN{commands} pattern{comands} END{comands} [inputfile]inputfile表示awk处理的文件 BEGIN模式与END模式 BEGIN模式是一种特殊的内置模式其执行的时机为awk程序刚开始执行但是又尚未读取任何数据之前。因此该模式所对应的操作仅仅被执行一次当awk读取数据之后BEGIN模式便不再成立。所以用户可以将与数据文件无关而且在整个程序的生命周期中只需执行一次的代码放在BEGIN模式对应的操作中一般用于打印报告的标题和更改内在变量的值END模式是awk的另外一种特殊模式该模式执行的时机与BEGIN模式恰好相反它是在awk命令处理完所有的数据即将退出程序时成立在此之前END模式并不成立。无论数据文件中包含多少行数据在整个程序的生命周期中该模式所对应的操作只被执行1次。因此一般情况下用户可以将许多善后工作放在END模式对应的操作中一般用于打印总结性的描述或数值总和 实例 [rootserver ~]# awk BEGIN{print begin...} {print $0} END{print The end} /etc/fstab begin...# # /etc/fstab # Created by anaconda on Fri Nov 10 15:23:57 2023 # # Accessible filesystems, by reference, are maintained under /dev/disk/. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run systemctl daemon-reload to update systemd # units generated from this file. # /dev/mapper/rhel-root / xfs defaults 0 0 UUIDefa541c3-f73f-4597-84b4-40b9185aee51 /boot xfs defaults 0 0 /dev/mapper/rhel-swap none swap defaults 0 0 The end[rootserver ~]# awk BEGIN{print begin...} {print $0} END{print The end} /etc/hosts #0表示打印全部 begin... 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 The end [rootserver ~]# awk BEGIN{print begin...} {print $1} END{print The end} /etc/hosts #1表示打印每行的第一段 begin... 127.0.0.1 ::1 The end [rootserver ~]# awk BEGIN{print begin...} {print $2} END{print The end} /etc/hosts #2表示打印每行的第二段 begin... localhost localhost The endawk的输出 格式 [rootserver ~]# awk BEGIN{commands} {print item1,item2...} END{comands} [inputfile]各项目之间使用逗号隔开而输出到屏幕时则以空格字符分隔输出的item可以为字符串或数值或当前记录的字段如$1或变量或awk的表达式数值会先转换为字符串然后再输出 记录和域记录表示数据行域表示行中的一小段 概念 awk认为输入文件是结构化的awk将每个输入文件行定义为记录行中的每个字符串定义为域域之间用空格Tab键或其他符号进行分隔分隔域的符号就叫做分隔符,默认为空格或Tabawk定义域操作符$来指定执行动作的域域操作符$后面跟数字或变量来标识域的位置每条记录的域从1开始编号如$1表示第一个域 $0表示所有域 实例 [rootserver ~]# vim awk1.txt li xiaoming xian 13289776875 zhang cunhua beijing 14796823450 wang xiaoer xiaoyang 14356990823 [rootserver ~]# awk {print $0} awk1.txt li xiaoming xian 13289776875 zhang cunhua beijing 14796823450 wang xiaoer xiaoyang 14356990823[rootserver ~]# awk {print $1,$2} awk1.txt li xiaoming zhang cunhua wang xiaoer[rootserver ~]# awk {print $1} awk1.txt li zhang wang[rootserver ~]# awk {print $1,$4} awk1.txt li 13289776875 zhang 14796823450 wang 14356990823[rootserver ~]# awk BEGIN{one1;two2} {print $(onetwo)} awk1.txt #BEGIN中的变量必须使用;隔开 xian beijing xiaoyang查看本机IP [rootserver ~]# ip a | grep ens160 | grep inet | awk {print $2} 192.168.80.129/24 或 [rootserver ~]# ip a | grep ens160 | awk /inet/{print $2} 192.168.80.129/24查看内存剩余量 [rootserver ~]# free -m | awk /Mem/{print $4} #西安执行条件匹配再执行动作 845查看开机挂载设备的文件系统 [rootserver ~]# awk /^[^#]/{print $3} /etc/fstab xfs xfs swap查看hosts文件的IP地址 [rootserver ~]# awk {print $1} /etc/hosts 127.0.0.1 ::1使用-F参数指定域之前的分隔符默认为空格或tab 语法 [rootserver ~]# awk -F 符号 /匹配条件/{执行动作} 文件名实例 查看本机所有账户的名称及UID [rootserver ~]# awk -F : {print $1,$3} /etc/passwd root 0 bin 1 daemon 2 adm 3 lp 4 sync 5 shutdown 6 halt 7 mail 8 operator 11 games 12 ftp 14 nobody 65534 systemd-coredump 999 dbus 81 polkitd 998 avahi 70 tss 59 colord 997 clevis 996 rtkit 172 sssd 995 geoclue 994 libstoragemgmt 993 setroubleshoot 992 pipewire 991 flatpak 990 gdm 42 cockpit-ws 989 cockpit-wsinstance 988 gnome-initial-setup 987 sshd 74 chrony 986 dnsmasq 985 tcpdump 72 systemd-oom 978 redhat 1000[rootserver ~]# awk -F : BEGIN{print 账户名,UID} {print $1,$3} /etc/passwd 账户名 UID root 0 bin 1 daemon 2 adm 3 lp 4 sync 5 shutdown 6 halt 7 mail 8 operator 11 games 12 ftp 14 nobody 65534 systemd-coredump 999 dbus 81 polkitd 998 avahi 70 tss 59 colord 997 clevis 996 rtkit 172 sssd 995 geoclue 994 libstoragemgmt 993 setroubleshoot 992 pipewire 991 flatpak 990 gdm 42 cockpit-ws 989 cockpit-wsinstance 988 gnome-initial-setup 987 sshd 74 chrony 986 dnsmasq 985 tcpdump 72 systemd-oom 978 redhat 1000使用系统内置变量FS修改分隔符 语法 [rootserver ~]# awk BEGIN{FS符号} /匹配条件/{执行动作} 文件名[rootserver ~]# awk BEGIN{print $FS}[rootserver ~]# awk BEGIN{FS:;print 账户名,UID} {print $1,$3} /etc/passwd 账户名 UID root 0 bin 1 daemon 2 adm 3 lp 4 sync 5 shutdown 6 halt 7 mail 8 operator 11 games 12 ftp 14 nobody 65534 systemd-coredump 999 dbus 81 polkitd 998 avahi 70 tss 59 colord 997 clevis 996 rtkit 172 sssd 995 geoclue 994 libstoragemgmt 993 setroubleshoot 992 pipewire 991 flatpak 990 gdm 42 cockpit-ws 989 cockpit-wsinstance 988 gnome-initial-setup 987 sshd 74 chrony 986 dnsmasq 985 tcpdump 72 systemd-oom 978 redhat 1000[rootserver ~]# awk BEGIN{FS:;print UID,GID} {print $3,$4} /etc/passwd UID GID 0 0 1 1 2 2 3 4 4 7 5 0 6 0 7 0 8 12 11 0 12 100 14 50 65534 65534 999 997 81 81 998 996 70 70 59 59 997 993 996 992 172 172 995 991 994 990 993 989 992 988 991 986 990 985 42 42 989 984 988 983 987 982 74 74 986 981 985 980 72 72 978 978 1000 1000NRNFFILENAME变量 NR变量表示记录数及行号NF变量表示处理的域数量FILENAME变量被处理的文件名 实例 [rootserver ~]# awk {print NR,NF,$0} END{print FILENAME} awk1.txt 1 4 li xiaoming xian 13289776875 2 4 zhang cunhua beijing 14796823450 3 4 wang xiaoer xiaoyang 14356990823 awk1.txt#4表示这一行有4段[rootserver ~]# awk {print 第,NR,行,有,NF,段 /root/t1.txt} awk1.txt [rootserver ~]# cat t1.txt 第 1 行 有 4 段 第 2 行 有 4 段 第 3 行 有 4 段[rootserver ~]# awk {print 第,NR,行,有,NF,段} awk1.txt /root/t1.txt [rootserver ~]# cat t1.txt 第 1 行 有 4 段 第 2 行 有 4 段 第 3 行 有 4 段awk变量 概念 与其他的程序设计语言一样awk本身支持变量的相关操作包括变量的定义和引用以及参与相关的运算等。此外还包含了许多内置的系统变量变量的作用是用来存储数据。变量由变量名和值两部分组成其中变量名是用来实现变量值的引用的途径而变量值则是内存空间中存储的用户数据awk的变量名只能包括字母、数字和下划线并且不能以数字开头。例如abc、a_、_z以及a123都是合法的变量名而123abc则是非法的变量名。另外awk的变量名是区分大小写的因此X和x分别表示不同的变量awk中的变量类型分为两种分别为字符串和数值。但是在定义awk变量时无需指定变量类型awk会根据变量所处的环境自动判断。如果没有指定值数值类型的变量的缺省值为0字符串类型的变量的缺省值为空串 内置变量 变量作用$0记录变量表示所有域$n字段变量表示第n个域n为1-9NF当前记录的域个数NR记录行号FS输入字段分隔符默认值是空格或者制表符可使用-F指定分隔符OFS输出字段分隔符 OFS”#”指定输出分割符为#RS记录分隔符默认值是换行符 \nENVIRON当前shell环境变量及其值的关联数组FILENAME记录文件名 实例 准备实例文件 [rootserver ~]# vim awk2.txt zhangsan 68 88 92 45 71 lisi 77 99 63 52 84 wangwu 61 80 93 77 81例1 [rootserver ~]# vim test.awk {printprint $0:,$0print $1:,$1print $2:,$2print NF:,NFprint NR:,NRprint FILENAME:,FILENAME } [rootserver ~]# awk -f test.awk awk2.txt zhangsan 68 88 92 45 71 $0: zhangsan 68 88 92 45 71 $1: zhangsan $2: 68 NF: 6 NR: 1 FILENAME: awk2.txt lisi 77 99 63 52 84 $0: lisi 77 99 63 52 84 $1: lisi $2: 77 NF: 6 NR: 2 FILENAME: awk2.txt wangwu 61 80 93 77 81 $0: wangwu 61 80 93 77 81 $1: wangwu $2: 61 NF: 6 NR: 3 FILENAME: awk2.txt例2 [rootserver ~]# awk -F : BEGIN{OFS\t} {print $1,$2} /etc/passwd #写命令时域之间用逗号显示内容的域之间使用OFS控制 root x bin x daemon x adm x lp x sync x shutdown x halt x mail x operator x games x ftp x nobody x systemd-coredump x dbus x polkitd x avahi x tss x colord x clevis x rtkit x sssd x geoclue x libstoragemgmt x setroubleshoot x pipewire x flatpak x gdm x cockpit-ws x cockpit-wsinstance x gnome-initial-setup x sshd x chrony x dnsmasq x tcpdump x systemd-oom x redhat x[rootserver ~]# awk -F : BEGIN{OFS---} {print $1,$2} /etc/passwd root---x bin---x daemon---x adm---x lp---x sync---x shutdown---x halt---x mail---x operator---x games---x ftp---x nobody---x systemd-coredump---x dbus---x polkitd---x avahi---x tss---x colord---x clevis---x rtkit---x sssd---x geoclue---x libstoragemgmt---x setroubleshoot---x pipewire---x flatpak---x gdm---x cockpit-ws---x cockpit-wsinstance---x gnome-initial-setup---x sshd---x chrony---x dnsmasq---x tcpdump---x systemd-oom---x redhat---x例3 # 面试题打印/etc/sos/sos.conf中所有的空白行的行号 [rootserver ~]# awk /^$/{print NR} /etc/sos/sos.conf 10 17 25 32用户自定义变量 awk允许用户自定义自己的变量以便在程序代码中使用变量名命名规则与大多数编程语言相同只能使用字母、数字和下划线且不能以数字开头awk变量名称区分字符大小写 实例 #变量定义在BEGIN中 [rootserver ~]# awk BEGIN{testhello world;print test} hello world#变量定义在-V参数后 [rootserver ~]# awk -v testhello world BEGIN{print test} hello worldawk运算符 awk是一种编程语言环境因此它也支持常用的运算符以及表达式例如算术运算、逻辑运算以及关系运算等 算术运算符 - * / % ^(指数) **(指数)实例 [rootserver ~]# awk BEGIN{x2;y3;print xy,x-y,x*y,x/y,x^y,x**y} 5 -1 6 0.666667 8 8#面试题统计某目录下的文件占用存储空间字节数 [rootserver ~]# ll /root | awk BEGIN{size0} {sizesize$5} END{print size/1024,KB} 1.7959 KB赋值运算符 符号 / * % ^实例 [rootserver ~]# awk BEGIN{a5;a5;print a} 10 [rootserver ~]# awk BEGIN{a5;a*32;print a} 25条件运算符 条件表达式?表达式1表达式2条件运算符是一个三目运算符条表成立则表达式1为最终结果否则表达式2为最终结果 实例 [rootserver ~]# vim awk2.txt zhangsan 68 88 lisi 77 99 wangwu 61 80 [rootserver ~]# awk {max$2$3?$2:$3;print NR,max,max} awk2.txt 1 max 88 2 max 99 3 max 80逻辑运算符 符号 || !关系运算符 符号 ! ~(匹配) !~不匹配实例 # 查询/etc/passwd文件中第三列小于10以下的信息仅列出账户与uid [rootserver ~]# awk -F : $310{print $1 , $3} /etc/passwd# 查看ip地址 [rootserver ~]# ifconfig ens160 | awk NR2{print $2} #NR定位到第二行其他运算符 -- - 等[rootserver ~]# awk BEGIN{a0 ; print a , a } 0 2 # 注意awk变量为字符串变量时参与了算术操作其值自动转为数值0 [rootserver ~]# awk BEGIN{achina ; print a , a } 0 2 [rootserver ~]# awk BEGIN{aABABABAB ; print a , a } 0 2 [rootserver ~]# awk {count ; print $0} END{print 账户数: , count} /etc/passwd # 注意count未赋初值参与算术运算时数值自动转为0awk的模式 awk支持关系表达式、正则表达式、混合模式、BEGIN模式、END模式等 关系表达式 新建示例文件 [rootserver ~]# vim awk3.txt liming 85 wangwei 99 zhangsan 68例 [rootserver ~]# awk $280{print } awk3.txt #print什么也不写表示输出全部内容正则表达式 与sed一样awk的正则表达式必须放置在两个/之间/正则表达式/ [rootserver ~]# awk /^l/{print} awk3.txt liming 85 [rootserver ~]# awk /^l|z/{print} awk3.txt liming 85 zhangsan 68 [rootserver ~]# awk /root/{print} /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin混合模式 awk支持关系表达式或正则表达式还支持逻辑运算符、|| 、组成的混合表达式 [rootserver ~]# awk /^l/ $2 80 {print} awk3.txt liming 85awk控制语句 if语句 格式与C语言类似 if (expression) {语句1语句2…… } else {语句3语句4…… }实例 [rootserver ~]# vim if.awk #!/bin/awk -f {if($290){print 优秀} else{if($280){print 良好}else{if($260){print 及格} else{print 补考} } } } [rootserver ~]# chmod x if.awk [rootserver ~]# ./if.awk awk3.txt 良好 优秀 及格 [rootserver ~]# cat awk3.txt liming 85 wangwei 99 zhangsan 68# 输出UID小于GID的账户名 [rootserver ~]# awk BEGIN{FS:} {if($3$4) print $1} /etc/passwd adm lp mail games ftp# UID为奇数的账户名 [rootserver ~]# awk BEGIN{FS:} {if($3%21) print $1} /etc/passwd# UID为偶数但小于20的账户名 [rootserver ~]# awk BEGIN{FS:} {if($3%20 $320) print $1} /etc/passwd# uid包含9的账户名 [rootserver ~]# awk BEGIN{FS:} {if($3~9) print $1} /etc/passwd# 面试题 1.查询cpu占用率大于指定数值的信息 [rootserver ~]# ps -eo user,pid,pcpu,comm | awk {if($30) print} 2.统计系统账户数UID小于1000的为系统账户其它为普通账户 [rootserver ~]# awk -F : {if($31000) {x} else {y}} END{print 系统账户数:,x,\n,普通账户数:,y} /etc/passwd 系统账户数: 35 普通账户数: 2for循环 格式与C语言格式相同 实例 [rootserver ~]# awk BEGIN{for(i1;i100;i) {sumsumi} ; print sum,sum} sum 5050while循环 格式1 while(expression) {循环语句1循环语句2…… }格式2 do{循环语句1循环语句2…… }while(expression)实例 [rootserver ~]# awk BEGIN{while(i100) {sumi ; i} ; print sum,sum} sum 5050breakcontinue语句 next语句 next语句并不是用在循环结构中而是用于awk整个执行过程中当awk程序执行时若遇到next语句则提前结束本行处理会继续读取下一行 [rootserver ~]# awk -F : {if($3%20) next ; print $1} /etc/passwdexit 作用终止awk程序执行 格式化输出 1、格式 与c语言格式相同 printf(format\n,输出列表项) 2、format format是一种控制输出格式的字符串以%开头后跟上一个字符如 %c:字符 %d%i十进制整数 %u无符号整数 %f浮点数 %e%E科学计数法 %s字符串 %%显示一个%format说明符有修饰符 N:数字 -左对齐 显示数值符号3、注意 printf语句不会打印\n字符串一般使用双引号作为定界符 4、示例 [rootserver ~]# awk BEGIN{printf(%d,%c\n,A,97)} 0,a [rootserver ~]# awk BEGIN{printf(%5d\n,12345)} 12345 [rootserver ~]# awk BEGIN{printf(%2d\n,12345)} 12345 [rootserver ~]# awk BEGIN{printf(%5d\n,12)} #右对齐左边补空格12 [rootserver ~]# awk BEGIN{printf(%-5d\n,12)} #左对齐右边补空格 12 [rootserver ~]# awk BEGIN{printf(%10.2f\n,123.4567)}123.46 [rootserver ~]# awk BEGIN{printf(%5.2f\n,123.4567)} 123.46 [rootserver ~]# awk BEGIN{printf(%.2f\n,123.4567)} 123.46 [rootserver ~]# awk BEGIN{printf(%E\n,123.4567)} 1.234567E02 [rootserver ~]# awk -F : {printf(%-20s%d\n,$1,$3)} /etc/passwd# 面试题计算本机内存的占用率% [rootserver ~]# free | awk NR2{printf(内存利用率:%%%.2f\n,($3/$2)*100)}awk数组 1、索引数组 索引数组以数字作为下标通过数组的下标索引引用数组中所有元素下标一般从0开始例 [rootserver ~]# awk BEGIN{a[0]a ; a[1]b ; a[2]c ; a[3]d ; print a[0],a[1],a[2],a[3]} a b c dawk数组中元素若为空串是合法的注意空串不是空 [rootserver ~]# awk BEGIN{a[0]a ; a[1] ; a[2]c ; a[3]d ; print a[0],a[1],a[2],a[3]} a c d当一个元素不存在于数组时此时若引用该数值awk会自动创建该元素值为空串 [rootserver ~]# awk BEGIN{a[0]a ; a[1]b ; a[2]c ; a[3]d ; print a[0],a[1],a[2],a[3],a[4]} a b c d 2、关联数组 原则数组的索引以字符串作为下标 [rootserver ~]# awk BEGIN{a[zero]a ; a[one]b ; a[two]c ; a[three]d ; print a[zero],a[one],a[two],a[three]} a b c d注意 awk数组本质是一种使用字符串作为下标的关联数组awk数组中的数字下标最终会转为字符串 3、循环遍历数组 格式1 for(初始化;条件表达式;步长) {循环体语句 }格式2 for(变量 in 数组) {循环体语句 }例1利用for循环变量i与数组下标都是数字的这一特征按顺序输出数组元素 [rootserver ~]# awk BEGIN{a[0]a;a[1]b;a[2]c;a[3]d; for(i0;i4;i) {print i,a[i]}} 0 a 1 b 2 c 3 d例2数组中下标为字符串且无规律则使用for循环的in方式访问输出内容为无序状态 [rootserver ~]# awk BEGIN{a[zero]a ; a[one]b ; a[two]c ; a[three]d ; for(i in a) {print i,a[i]}} three d two c zero a one b注意awk数组本质是一种“关联数组”,默认打印的顺序是无序的例1中时借助for循环中循环变量i的值实现输出有序的由于i的值是数值并递增的且刚好与数组下标相等则使得使用数值作为数组下标时for循环访问是按一定顺序的。 4、利用数组统计字符串出现次数 awk中可以利用数值进行运算如 [rootserver ~]# awk BEGIN{a1;print a} 2变量值为字符串的自增运算 [rootserver ~]# awk BEGIN{atest ; print a,a} test 1注意 awk中字符串参与算术运算时会被当做数值0当引用一个不存在的数组元素时该元素被赋值为空字符串若该空字符串参与算术运算会被当做数值0 例1统计文本中IP出现次数 # 准备文本 [rootserver ~]# vim iptest.txt 192.168.48.1 192.168.48.2 192.168.48.5 192.168.48.1 192.168.48.3 192.168.48.1 192.168.48.5 192.168.48.2 192.168.48.4 192.168.48.1[rootserver ~]# awk {count[$1]} END{ for(i in count) {print i,次数:,count[i]}} iptest.txt 192.168.48.1 次数: 4 192.168.48.2 次数: 2 192.168.48.3 次数: 1 192.168.48.4 次数: 1 192.168.48.5 次数: 2分析 创建一个count数组并将文件中ip地址行作为元素的下标所以执行第一行时引用的数组为count[“192.168.48.1”]count[“192.168.48.1”]相当于存储的数据为0并自增1继续下一行处理运算过程同上当再次遇到192.168.48.1IP地址时会使用上一次的数组存储数据参与自增运算直到所有行遍历结束执行END模式完成打印 例2查看服务器连接状态并汇总 [rootserver ~]# netstat -an | awk /^tcp/{s[$NF]} END{for(i in s) {print i,s[i]}} LISTEN 8 ESTABLISHED 2分析 netstat -an查看连接/^tcp/ 通过正则过滤$NF:过滤结果的第6行

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

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

相关文章

机械网站开发铁路局招聘正式工4000人

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…

协会网站建设计划书工商局网站怎么做股东实名认证

1. 题目 给定一个整数序列&#xff1a;a1, a2, …, an&#xff0c;一个132模式的子序列 ai, aj, ak 被定义为&#xff1a;当 i < j < k 时&#xff0c;ai < ak < aj。 设计一个算法&#xff0c;当给定有 n 个数字的序列时&#xff0c;验证这个序列中是否含有132模…

网站主持人制作网站代言人asp 网站开发 软件

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

实用指南:轻松玩转Swagger API文档神器

实用指南:轻松玩转Swagger API文档神器pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

记录java调用eclipse cdt 解析c++文件

环境: jdk1.8 eclipse cdt 9.11.1 需求: java 解析c++中的类,属性类型,属性名称,函数,函数参数,返回值。 注意点: 如果你是外网编码,移植依赖和代码到内网的时候 运行可能出现 class not found xxxx , 这…

Chormium 密码管理器表单结构体说明(基于Chromium138)

这个结构体(struct PasswordForm)是 Chromium 浏览器(以及所有基于 Chromium 的浏览器,例如 Chrome、Edge 等)中密码管理器用来存储和管理单个登录凭证(即一组用户名和密码)的核心数据结构。它不仅包含了用户名…

为什么人工智能选择Python?深入解析AI界的胶水语言

在人工智能(AI)的黄金时代,Python几乎"统治"了整个领域。从深度学习到机器学习,从学术研究到工业应用,Python无处不在。 但为什么是Python?为什么不是性能更强的C++、生态成熟的Java,或者其他现代语言…

惠安网站建设报价网站开发工程师招聘要求

有很多网友在问&#xff1a;TPlink路由器端口映射怎么设置&#xff1f;因为不懂端口映射的原理&#xff0c;所以无从下手&#xff0c;下面小编就给大家分享TPlink云路由器界面端口映射设置方法&#xff0c;帮助大家快速入门TP路由器端口映射设置方法。 1.登录路由器管理界面&a…

咸宁网站设计windows 上wordpress

上一篇中 我们详细讲了内存溢出 内存泄漏 还有相关的案例。 这篇博客中我们主要了解一下GC调优。 有些新手可能会有一点 疑问—— 这两者不是一回事吗&#xff1f;&#xff1f; 其实说一回事 也没错 因为GC调优本质上还是针对 堆上的内存 只不过前面我们关注的侧重点在于 不合…

模版网站有源代码吗注册公司代理费用多少钱

【vs2019】window10环境变量设置 【先赞后看养成习惯】求关注点赞收藏&#x1f60a; 安装VS2019时建议默认安装地址&#xff0c;最好不要改动&#xff0c;不然容易出问题 以下是安装完VS2019后环境变量的设置情况&#xff0c;C:\Program Files (x86)\Microsoft Visual Studi…

1 day(20250925) - when

第一天,好像时间还可利用的地方很多,其实是效率和时长都有待提升。 哇要做的事情都蛮复杂和多的,其实没那么难对吧,不过太多了,想要迈大步就变得不可能实现,而且迈大步总感觉会错过一些细节,不能够有底气。但是…

12分钟讲解Python核心理念

https://segmentfault.com/a/1190000047277781 12分钟讲解Python核心理念 本内容是对 Every Python Concept Explained in 12 Minutes 内容的翻译与整理。 Python之禅(The zen of Python) 当你在Python解释器中输入i…

【重要】什么是 PEP 8 规范

PEP 8 是 Python 官方的代码风格指南,全称为 Python Enhancement Proposal 8(Python 增强提案 8),旨在通过统一编码规范提升代码的可读性、一致性和可维护性。以下是其核心内容与重要性: 一、PEP 8 的核心规范代码…

实用指南:华为坤灵:点燃中小企业智能化的星火

实用指南:华为坤灵:点燃中小企业智能化的星火pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

阻止HTML input元素(type=number)中输入字母e的方法

在HTML中,<input type=number> 元素允许用户输入一个数字,它可以包含正数、负数、整数、浮点数以及特殊字符,如 e表示科学计数法。然而,在某些情况下,你可能不希望允许用户输入字母 e。为了实现这一目标,可…

荣县规划和建设局网站如何建设企业网站

力扣138&#xff1a;随机链表的复制 题目描述&#xff1a; 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff…

网站开发课表查询吉安工商注册官方网站

简介&#xff1a; 智能的运维平台&#xff0c;帮助企业业务平稳、智能、高效地运行。 每一起严重事故背后&#xff0c;必然有29次轻微事故和300起未遂先兆以及1000起事故隐患。—— 海恩法则(Heinrich‘s Law) 随着云计算时代的到来&#xff0c;大量企业将自己的业务逐步迁移…

网站建设广西企业展厅建筑外观

自己总结的&#xff0c;给大家参考一下&#xff0c;

【Prompt学习技能树地图】利用GitHub-Prompt Engineering Guide进阶学习Prompt工程指南 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …