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

discuz 做的网站扬中网站开发

discuz 做的网站,扬中网站开发,北京商地网站建设公司,建卖手机网站文章目录 awk基础结构说明与示例参数与内置变量常用参数内置变量其他参数内置变量 简单示例理解option简单参数NR与FNR-v ARGC ARGV参数 执行脚本if elsefor循环关联数组指定匹配pattern 使用正则指定分隔符理解pattern正则与逻辑算术 printfif else for whileBEGIN ENDnext(跳… 文章目录 awk基础结构说明与示例参数与内置变量常用参数内置变量其他参数内置变量 简单示例理解option简单参数NR与FNR-v ARGC ARGV参数 执行脚本if elsefor循环关联数组指定匹配pattern 使用正则指定分隔符理解pattern正则与逻辑算术 printfif else for whileBEGIN ENDnext(跳过行)重定向输出到文件字符串函数替换函数拆分与查找函数其他字符串函数字符串函数示例 算术函数其他函数系统调用(system)时间与格式化(mktime systime strftime)读取流数据关闭流(getline close) 实例与ss、netstat结合使用查看IP 端口统计tcp连接中状态数量统计访问日志中404的数量查看本机ip地址统计文件夹下文件大小 awk基础结构说明与示例 这个非常重要只有理解了awk的基础结构才能一眼看清awk在做什么也便于记忆不然过几天就忘了。 awk [option] [BEGIN{}] ‘[pattern]{action}’ [END{}] file1 file2… awk是按行处理指定文件的文本 option是选项可以设置分隔符等可选pattern是模式匹配上才执行action可选action是动作例如输出等filename表示要处理的文件BEGINawk开始之前执行1次ENDawk结束之后执行1次 参数与内置变量 常用参数内置变量 符号变量说明-F字段分隔符默认空格$0匹配到的当前行$nn为1、2、3…表示记录分隔之后第n个字段NFNumber of Fieldawk当前处理行的字段数要取最后一个字段就是$NFNRNumber of Recordawk当前处理的记录数(通常是行)FNRFile Number of Recordawk当前处理的行在文件中的记录数(通常是行)FSField Separator字段分隔符默认空格RSRecord Separator,记录(通常是行)分隔符默认换行符 其他参数内置变量 符号变量说明-f awk-script.awk指定awk脚本文件OFS输出字段的分隔符默认空格Output Field SeparatorORS输出行(记录)的分隔符默认换行符Output Record SeparatorFILENAME处理的文件名称FIELDWIDTHS字段宽度-v kv指定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.txtNR与FNR NR和FNR主要区别体现在有多个文件的时候 NR是awk处理的当前总行数FNR是awk处理的当前行在文件中的行数 awk {print 文件:FILENAME,NR:,NR,FNR:,FNR} a1.txt a2.txt-v ARGC ARGV参数 echo | awk -v v1参数1 -v v2v2 BEGIN{print v1,v2,ARGC;for( a in ARGV){print a,ARGV[a]}}执行脚本 awk可以写非常复杂的命令有时候写在1行之中不好看可以将命令写作文件中然后像sed一样通过-f参数来执行脚本。 awk -f awk-script.awk awk.txt#!/bin/awkBEGIN {print 脚本开始执行设置选项FS RS\nORS\n\n } {print $1,$NF } END{print 脚本执行完成 }if else {if ($111) {print 匹配到11}else if ($1luck) {print 匹配到第1个字段luck}else {print 第一个字段为其他值} }for循环 for循环 {for ( i1;i5;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]} }使用正则指定分隔符 例如下面文件要如何分割其中的数字呢 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 [ :] NR2{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 $111 || $1bb{print $0} awk.txt# 打印第1个字段是11并且第2个字段是22的行 awk $111 $222{print $0} awk.txt# 查看2到4行的第1个字段 awk {if(NR2 NR5) 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.txtprintf 格式符号说明%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.txtif else for while # 语句用{} awk {if($1$2){print 大于}else{print 小于或等于}} awk.txt# 打印所有字段 awk {for(i1;iNF;i){print $i}} awk.txt awk {i1; while(iNF){print $i;i}} awk.txtawk {if(NR%20){print -----}print $0} awk.txt# 输出文件2到5行 awk {if(NR2 NR5) print $0} awk.txt BEGIN END 注意是大写的BEGIN END # BEGIN最先执行END最后执行 awk BEGIN {print 执行begin语句} {print $1,$NF} END {print 执行end语句} awk.txt# 多条语句;分割 awk BEGIN{num0;a5;print a}# 支持正则 awk BEGIN{straa100bbcc;if(str~/100/) {print 字符串包含数字100}}# echo不能省略因为awk默认需要文件,这里echo没有输入使用begin中初始化的变量 echo|awk BEGIN{strbb100aaa}str~/100/{print 字符串包含数字100}END{print end}# 支持三目运算符 awk BEGIN{num200;print num200?状态码正常:状态码错误}# 可以通过FS变量来指定分隔符 awk BEGIN{FS:}{print NF} awk.txt awk BEGIN{FS:;OFS#}{print $1,$2} awk.txt # 统计第1个字段等于11的行数 awk BEGIN {count0;} {if($111){countcount1};print $0} END{print 第1个字段是11行数:,count} awk.txt next(跳过行) next表示跳过行 # 打印偶数行跳过奇数行 awk NR%21{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重定向输出到文件 # 覆盖原文件 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代替rgsub(r,s,t)在整个t中用s替代rsub(r,s)用$0中最左边最长的子串代替ssubstr(s,p)返回字符串s中从p开始的后缀部分substr(s,p,n)返回字符串s中从p开始长度为n的后缀部分 拆分与查找函数 函数说明index(s,t)返回s中字符串t的第1个位置索引从1开始如果没有找到返回0match(s,r)测试s是否包含匹配r的字符串,返回第1个匹配位置没有匹配则为0split(s,a,fs)在fs上将s分成序列asprint(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{contentwhat are word 99 啊哈 100 娘子 88;gsub(/[0-9]/,####,content);print content}# 索引位置从1开始 awk BEGIN{contentwhat are word 99 啊哈 100 娘子 88;print index(content,what)} # 返回的是第1个位置 awk BEGIN{contentwhat are word 99 啊哈 100 娘子 88;print index(content,are)} # 没找到返回0 awk BEGIN{contentwhat are word 99 啊哈 100 娘子 88;print index(content,where)}# 索引位置从1开始 awk BEGIN{contentwhat are word 99 啊哈 100 娘子 88;print match(content,what)} # 返回的是第1个位置 awk BEGIN{contentwhat are word 99 啊哈 100 娘子 88;print match(content,are)} # 没找到返回0 awk BEGIN{contentwhat are word 99 啊哈 100 娘子 88;print match(content,where)}# 从第5个字符开始截取6个字符 awk BEGIN{contentwhat are word 99 啊哈 100 娘子 88;print substr(content,5,6);}# 用空格拆分content然后打印数组长度和数组 awk BEGIN{contentwhat are word 99 啊哈 100 娘子 88;split(content,resultArray, );print length(resultArray);for(k in resultArray){print k,resultArray[k];}} # 默认就是使用空格拆分所以可以省略第3个参数 awk BEGIN{contentwhat are word 99 啊哈 100 娘子 88;split(content,resultArray);print length(resultArray);for(k in resultArray){print k,resultArray[k];}}算术函数 函数说明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();num100*rand();print num} awk BEGIN{srand();numint(100*rand());print num} awk BEGIN{srand();numsqrt(16);print num}其他函数 函数说明system()调用系统命令mktime()生成时间strftime()格式化时间输出将时间戳转为时间字符串systime()得到时间戳,秒close()关闭流通常和getline结合使用getline从标准输入、重定向、管道、文件等输入流获取数据 系统调用(system) awk中可以使用system()来调用系统命令 # 创建第1个字段为文件名的txt文件 awk {system(touch $1.txt)} awk.txt用awk命令来执行文件中的所有awk命令 awk BEGIN{print 脚本命令执行开始}/^awk/{print 执行命令:$0;system($0)}END{print \n脚本命令执行结束} awk-sh.txt时间与格式化(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{nowsystime();print now}# 根据时间创建时间戳:年月日时分秒 yyyy MM dd HH mm ss awk BEGIN{timemktime(2025 01 01 23 59 59);print time}# 时间戳不好看格式化一下 awk BEGIN{timemktime(2025 01 01 23 59 59);print strftime(%c,time)}# 还不好看在简化一下 awk BEGIN{timemktime(2025 01 01 23 59 59);print strftime(%D,time)}# 还不好看自定义一下 awk BEGIN{timesystime();print strftime(%Y-%m-%d %H:%M:%S,time)}# 计算一下到元旦还有多少天 awk BEGIN{time1mktime(2025 01 01 00 00 00);time2systime();print int((time1-time2)/(24 * 3600))}读取流数据关闭流(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 {count0;} $1tcp $2TIME-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 {count0;} $9404{count}END{print 404数量:,count} server_access_log查看本机ip地址 ifconfig | grep inet | awk {print $2}统计文件夹下文件大小 # 统计某个文件夹下的文件占用的字节数 ll | awk BEGIN {size0;} {sizesize$5;} END{print 文件夹下文件总大小:,size}# M单位换算 ll | awk BEGIN{size0;} {sizesize$5;} END{print 文件夹下文件总大小:,size/1024/1024,M}
http://www.zqtcl.cn/news/539382/

相关文章:

  • 做网站客户会问什么问题手机如何制作网页链接
  • 做足球直播网站wordpress筛选框
  • 做网站需求文档深圳站建在边境
  • 网站建设法规浙江建设信息港证书查询
  • 影视作品网站开发与设计网站建设教程简笔画
  • 自己可以给公司做网站吗网站建设 用ftp上传文件
  • 电子商务网站开发与管理网站建设的设备
  • 网站建设项目公司沈阳网站关键字优化
  • 可以做淘宝联盟的免费网站优质国外网站
  • 石家庄营销型网站建设公司服装公司网站源码
  • 网站开发的软硬件需求做网站盘锦
  • 创意网站建设排行榜python和php哪个做网站
  • 开锁做网站怎么样榆林网站开发公司
  • 松原市建设局网站苏州网站建设-中国互联
  • 标书制作教程视频网站福田祥菱v1单排
  • 点网站出图片怎么做能看人与动物做的网站
  • 免费开源建站系统源码wordpress公共函数在哪里
  • 西昌市建设工程管理局网站模块化网站开发
  • 无限看片的视频大全免费下载上海网络优化方法
  • 物流公司做网站注重什么问题中国建设银行征信中心网站
  • 教务处网站建设专业做鞋子的网站吗
  • 梦幻创意网站建设成都做网站设计哪家便宜
  • 织梦网站栏目修改教程丝绸之路网站建设意义
  • 如何知道一个网站是谁做的北京装饰公司前十名
  • 杭州网站建设哪个平台好visualstudio 做网站
  • 广州站是哪个站h5建站系统
  • 网站首页网址应该有对应的域名南京高端模板建站
  • 自己做的网站竞价优化怎么做网站流量赚钱吗
  • 人力资源网站建设mip网站模板
  • 太原市住房和城乡建设部网站网站 备案 换空间