
6. 常见操作(1)表达式: 例如,变量赋值(2)控制语句: 控制语句linux awk 循环处理,例如iflinux awk 循环处理,while等; (3)复合语句: 复合语句(4)输入语句(5)输出语句7. If(condition){statements} [else {statement}] while(condition){statements}对(expr1; expr2; expr3){statements} for(var in array){statements} switch(expression){case VALUE or / REGEXP /: statement;. . . 默认值: statementN}中断继续删除数组[索引]删除数组退出[表达式] {语句} 7.

1 if-else语法: if(condition)语句[else statement] if(condition){statements} [else {statements}]〜]#awk -F: '{if($ 3> = 500)print $ 1,$ 3}'/ etc / passwd〜]#awk -F: '{if($ 3> = 500)print $ 1,$ 3}'/ etc / passwd nfsnobody 65534 mark 500 mark1 501 fedora 502 apapche 503 system 504 [root @ www〜]#〜]#awk'{if(NF> = 6)print NF,$ 0}'/ etc / rc. d / rc. sysinit〜]#awk -F: '{if($ 3> = 500){print $ 1,“是普通用户”}} else {print $ 1,“是sysadmin或sysuser“}}''/ etc / passwd使用场景: 有条件地判断整行或awk获得的行中的字段; 7.

2 while循环语法: while(condition)语句while(condition){statements}在条件为“ true”时循环,在条件为“ false”时退出循环;使用场景: 通常用于在当前行Loop的字段之间执行; 〜]#awk'{i = 1; while(i <= NF){if(length($ i)> = 6){print $ i}; i ++}}'/ etc / issue7. 3 do- while循环语法: do语句while(条件)do {statements} while(条件)含义: 至少执行一次循环主体7. 4 for循环语法: for (expr1; expr2; expr3)的(expr1; expr2; expr3)语句{变量}的语句(变量赋值;条件;迭代过程){for-body}#awk'{for(i = 1; i <= NF; i ++){if(length($ i)> = 6)print $ i}}'/ etc / issue第二用法: 用于遍历数组中的元素,用于(数组中的var_name){for-body} 7. <

5 swtich语法: switch(表达式){case VALUE或/ REGEXP /: 语句;. . . 默认值: statementN} 7.6中断并继续中断[n]: 退出当前循环,n是一个数字,用于指定多个循环的退出;继续: 尽早结束本轮循环并进入下一轮; 7.7 next提前结束该行文本的处理,并提前进入下一行的处理操作; 〜]#awk -F: '{if($ 3%2 == 0)接下来; print $ 1,$ 3}'/ etc / passwd 8,array关联数组: array [index-expression] index-expression: 可以使用任何字符;如果数组元素事先不存在,则被引用时,awk将自动创建此元素并将其值初始化为空字符串;因此,如果要确定数组中的元素是否存在,请使用“数组中的索引”方法来确定;要遍历数组中的元素,请使用for(数组中的var_name)方法;此时,var_name将遍历每个数组索引,因此要显示数组元素的值,请使用array [var_name] weekdays weekdays [mon] =“ Monday” weekdays [tue] =“ Tuesday”.

. . for(i in weekdays): 这时,i变量将遍历平日数组的每个索引,即mon,tue,而不是元素值“ Monday”或“ Tuesday”等. 获取元素的值: weekdays [i]例如: 计算指定文件中所有行中每个单词的出现次数;您可以使用单词本身作为索引来定义一个数组,并且元素的值存储单词出现的次数您好吗?你几岁?计数[How] = 2计数[are] = 2计数[you?] = 2计数[old] =整个文件的1个统一统计信息: 〜]#awk'{for(i = 1; i <= NF; i ++){count [$ i] ++}} END {for(计数中的j){打印j,计数[j]}}'/根/计数. txt每行分别计数: 〜]#awk'{for(i = 1; i <= NF; i ++){count [$ i] ++};为(j个计数){print j,count [j]};删除计数}'/ root / count. txt计算当前系统上所有tcp连接的各种状态数; 〜]#ss -tan | awk'! / ^ State / {状态[$ 1] ++} END {for(i处于状态)print i,state [i]}'计算指定的Web访问日志中每个IP的资源访问次数: 〜]#awk '{ip [$ 1] ++} END {for(i in ip)print i,ip [i]}'/ var / log / httpd / access_log 9,内置函数和用户定义函数9.
1内置函数的数值处理: rand(): 返回0到1之间的随机数;字符串处理: length([s]): 返回指定字符串的长度; sub(r,s [,t]): 根据r表示的模式匹配字符串t中的内容,并用s表示的字符串替换第一次匹配的内容. gsub(r,s [,t]): 根据r表示的模式匹配字符串t中的内容,并将所有匹配的内容替换为s表示的字符串; split(s,a [,r]): 使用r作为分隔符. 剪切字符串s并将剪切结果保存到a表示的数组中;注意: awk的数组下标从1〜]#awk'{split($ 0,userinfo,“: ”);开始. print userinfo [1]}'/ etc / passwdsubstr(s,i [,n]): 从s表示的字符串中获取子字符串,方法: 从i表示的位置获取n个字符;时间函数: systime(): 取当前系统时间,结果以时间戳的形式出现; 9.2用户定义的函数function f_name(p,q){. . }
除非另有说明,否则本网站上的内容已获得以下许可的许可: CC署名-非商业用途-以相同的方式共享4.0国际许可协议4.0许可
作者: 马克
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-200891-1.html
老美真是一根筋
感觉丢了面子