时间:2021-05-22
脚本内容:
复制代码 代码如下:
#!/bin/bash
for ip in `cat ip.lst`
do
./ssh.exp $ip > /dev/null 2&>1
done
NK=`awk 'BEGIN{bs=4000000}/access/{if($1>bs){nk=NR-1;print nk}}' exp.log`
for nnk in $NK
do
awk -F"[@|']" 'NR=='"$nnk"' {print $2}' exp.log
done
然后又发现awk中$0的鬼怪。于是进一步简化成了这个样子:
复制代码 代码如下:
#!/bin/bash
for ip in
`cat ip.lst`
do
./ssh.exp $ip > /dev/null 2&>1
done
awk 'BEGIN{bs=4000000}/access/{if($1>bs)print x};{x=$0}' exp.log|awk -F"[@|']" '{print $2}'
终于算是圆了自己用一句话搞定它的梦。yeah~ 不过对这个原理还是不很明白。因为print x;x=$0出来是上一行,但print $0则是本行。why? 网上对打印前一行还提出另一个写法,就看的更莫名其妙了:
awk '/regex/{print (x==""?"":x)};{x=$0}' $1
而打印后一行是这样:
awk '/regex/{getline;print}' $1
不过这毕竟是恰好上下行而已,如果是要前几行的,还是要靠NR运算了。
因为awk的流式处理,print x;x=$0,这个时候的x要等到下一行时才print出来。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
看了网上好多关于AWK内建变量的文章,这里加上个人的理解和记忆,可以让大家掌握这些变量的基本用法。FS指定字段un列分隔符(FontSpace)[~/AWK_l
一、awk字符串转数字[chengmo@centos5~]$awk'BEGIN{a="100";b="10test10";print(a+b+0);}'110只
初始值如下:0→字节变量的内容0→短整数变量的内容0→整数变量的内容0→长整数变量的内容0→小数变量的内容0→双精度小数变量的内容假→逻辑变量的内容1899年1
语法格式:awk[选项]'指令'操作文件常用选项:-F指定分隔符,分隔符用""引起来-v:var=value在awk程序开始之前指定一个值valu给变量var,
awk正则表达式及内置函数实例详解:1、模糊匹配:复制代码代码如下:awk‘{if($3~/97/)print$0}'data.f:如果第三项中含有”97”则打