2021年11月22号 awk高级用法(下)

简介: 本文均为本人实操整理,请勿搬运,学习交流可以随时评论---魏红斌

awk函数
rand随机数
srand随机数必须匹配

awk ' BEGIN{srand();print int(rand()*100)}'
length([s])返回指定字符串的长度
sub替代
sub(r,s,[t]):对字符串搜索r表示模式匹配的内容,并将第一个匹配内容替换为s

echo "1:1:1 1:1:1" | awk 'sub(/:/,"-",$1)'
echo "1:1:1 1:1:1" | awk '{sub(/:/,"-",S1);print $0}'
gsub全部替代

echo "1:1:1 1:1:1" | awk 'gsub(/:/,"-",$1)'
echo "1:1:1 1:1:1" | awk '{gsub(/:/,"-",S1);print $0}'
split切割字符

netstat -tn|awk '/^tcp/{split($5,ip,":");count[ip[1]]++}END{for(i in count){print i,count[i]}}'
system函数调用shell命令

awk 'BEGIN{tail=180;system("echo your tail is" tail)}'
awk 'BEGIN{system("hostname")}'
防火墙(大于100进)

netstat -tn | awk '/^tcp/{split($5,ip," :" );count[ip[1]]++}END{for(i in name){if(name[i]>=100){system("iptables -A INPUT -s "i" -j REJECT")}}'
fun脚本函数(比较大小)

vim fun.awk
function max(x,y) {
x>y?var=x:var=y
return var
}
BEGIN{print max(a,b)}
awk -v a=100 -v b=200 -f fun.awk
awk脚本

vim test.awk

!/bin/awk -f

{if($3 >=1000)print $1,$3}
赋权

chomd +x test.awk
执行

./test.awk -F: /etc/passwd
awk变量脚本

vim test.awk

!/bin/awk -f

{if($3 >=min && $3<=max)print $1,$3}
chomd +x test.awk
./test.awk -F: min=100 max=1000 /etc/passwd
awk取日志关键字追加

awk -F”[ .]” ‘{print $2}’ 1.log >> 1.log
awk取中间网址

awk -F”/” ‘{url[$3]++}END{for(I in url){print url[i],i}}’ 1.log
排序前十

sort -nr|head -10
本人还总结了海量Linux运维和安装部署的问题,需要的话随时私聊我一下,可以技术交流,拒绝推销卖货!!

目录
相关文章
|
4月前
|
监控 Unix 数据处理
Grep命令的高级用法与实用技巧
Grep命令的高级用法与实用技巧
|
6月前
|
Perl
awk的具体用法
awk的具体用法
88 1
|
Shell 网络安全 Perl
2021年11月22号 awk高级用法(下)
2021年11月22号 awk高级用法(下)
128 0
|
Perl
2021年11月18号 awk高级用法(上)
2021年11月18号 awk高级用法(上)
125 0
|
Shell Linux Perl
|
关系型数据库 Perl