暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

AWK上古神器:文本处理

喏阿牛农场 2021-09-11
249

一,零碎知识积累:

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。

使用方法:

awk ‘{pattern+action}’ {filenames}

三种方式调用awk:

1,awk [-F field-separator] ‘commands’ input-file(s)

2,shell脚步方式

3,将所有的awk命令插入一个单独文件,然后调用

awk 内置变量:

ARCC 命令行参数个数

ARGV 命令行参数排列

ENVIRON 支持队列中系统环境变量的使用

FILENAME awk 浏览的文件名

FNR 浏览文件的记录数

FS 设置输入域分隔符,等价于命令行 -F选项

NF 浏览记录的域的个数

NR 已读的记录数

OFS 输出域分隔符

RS 控制记录分割符

FOR EXAMPLE:

------------------------------------------------------------------

输出方法printf:

awk -F ‘:’ ‘{printf(“filename:%10s, linenumber:%s,columns:%s, linecontent:%s\n”,FILENAME,NR,NF,$0)}’ etc/passwd

统计文件夹下文件的大小:

ls -l |awk ‘BEGIN {size=0;} {size=size+$5;} END{print “[end]size is “, size/1024/1024,”M”}’

条件语句

------------------------------------------------------------------

awk中的条件语句是从C语言中借鉴来的

循环语句

------------------------------------------------------------------

awk中的循环语句同样借鉴于C语言,支持while、do/while、for、break、continue,这些关键字的语义和C语言中的语义完全相同。

FOR EXAMPLE:

awk -F ‘:’ ‘BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}’ /etc/passwd

 

高级用法:

1,指定多个分隔符:分隔符写成放到方括号中,如$awk -F'[ :/t]’ ‘{print $1,$3}’ test

2,awk的key的变态用户:awk ‘{a[$1,”/t”, $2] += $4} END {for (uin in a) printf(“%s/t%d/n”, uin, a[uin]) }’ test

3,awk的范围模版:awk ‘/root/,/MySQL/’ test将显示root第一次出现到mysql第一次出现之间的所有行。

4,awk的重定向:awk 可使用shell的重定向符进行重定向输出,如:$ awk ‘$1 = 100 {print $1 > “output_file” }’ test

5,获取数组的长度:awk ‘BEGIN{info=”it is a test”;lens=split(info,tA,” “);print length(tA),lens,tA[1];}’

注意:数组下标是从1开始,与c数组不一样。

6,多维数组:awk提供了逻辑上模拟二维数组的访问方式,awk使用一个特殊的字符串SUBSEP (\034)作为分割字段,既是a[2,4]的键值为2\0344

7,两个文件行的关联:awk -F \| ‘NR==FNR{a[$1]=$0;next}{print a[$1]”|”$2}’ 文件1 文件2

8,显示最后一行:awk ‘END{print $0}’ file

9,显示最后一列:awk ‘{print $NF}’ file

10,求最小值:awk ‘

{min=65535;

for(i=1;i<=NF;i++)

{min=($i<min)? $i:min};

print min

}’ file

11,去重复行:awk ‘{if(ARGIND==1) {val[$1]}else{if($1 in val) delete val[$1]}}END{for(i in val) print i}’ 文件1 文件2

 

二,网络相关命令:

终端的网络命令:

curl & wget 访问下载

ping -c 4 google.com 查看网络连接状态

tracepath & traceroute 网络访问过程追踪,知道哪里的访问速度快慢

mtr命令把ping命令和tracepath命令合成了一个


文章转载自喏阿牛农场,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论