seo在网站建设中的作用,wap网站欣赏,怎么给领导做网站分析,北京计算机培训机构排名前十1、概述
Linux三剑客#xff1a;grep、sed、awk。grep主打查找功能#xff0c;sed主要是编辑行#xff0c;awk主要是分割列处理。本篇文章我们详细介绍awk命令。
awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。awk是一种编…1、概述
Linux三剑客grep、sed、awk。grep主打查找功能sed主要是编辑行awk主要是分割列处理。本篇文章我们详细介绍awk命令。
awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。awk是一种编程语言用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能是linux/unix下的一个强大编程工具。它在命令行中使用但更多是作为脚本来使用。awk有很多内建的功能比如数组、函数等这是它和C语言的相同之处灵活性是awk最大的优势。
awk是以文件的一行为处理单位的。awk每接收文件的一行然后执行相应的命令来处理文本。
2、语法
awk [选项] 执行脚本 varvalue 文件列表多个以空格分隔
awk [选项] -f 脚本文件 varvalue 文件列表多个以空格分隔
基本使用
[rootliuchao ~]# echo seg1:seg2:seg3:seg4:seg5 | awk -F: {print $2$3}
seg2seg3
[rootliuchao ~]#
图解 多分隔符实例
从”ab,cd:ef“字符串中拆分出 ”ab ef“ 这里以”,“和:为分隔符拆分
[rootliuchao ~]# echo ab,cd:ef | awk -F[,:] {print $1 $3}
ab ef
[rootliuchao ~]#
3、BEGIN 和 END 模块
咱们知道一个文件有多行数据执行一个awk命令时awk会对没一样数据执行相同的命令。但是有时候希望执行像模板模式一样在整个文件执行awk命令之前和之后做一些事情。对于这种需求我们就需要用到BEGIN和END模块。 awk在执行输入文件执前会执行BEGIN块在执行完输入文件所有行之后会执行END块。BEGIN常用场景初始化字段分隔符变量、打印页眉等。 END常用场景执行最终计算或者打印最终摘要信息等。
实例一、统计某个文件夹下的文件占用的字节数
[rootliuchao ~]# ll
总用量 4
drwxr-xr-x 2 root root 23 3月 31 18:04 awk_test
-rw-r--r-- 1 root root 84 11月 7 2019 catalina.out
drwxr-xr-x 6 root root 64 3月 29 16:38 logs
drwxr-xr-x 4 root root 34 12月 16 2019 nacos
[rootliuchao ~]#
[rootliuchao ~]# ll | awk BEGIN {size0;} {sizesize$5;} END{print 当前文件夹总大小是size}
当前文件夹总大小是205
[rootliuchao ~]# 实例二、统计某个文件夹下的文件占用的大小已M为单位
[rootliuchao ~]# ll | awk BEGIN {size0;} {sizesize$5;} END{print 当前文件夹总大小是size/1024/1024M}
当前文件夹总大小是0.000195503M
[rootliuchao ~]# 4、运算符 #赋值运算符a5
[rootliuchao ~]# awk BEGIN{a5;a5;print a}
10#逻辑运算符a2b1 运算结果 和 a1||b1 运算结果
[rootliuchao ~]# awk BEGIN{a1;b2;print (a2b1,a1||b1)}
0 1# 正则运算符
[rootliuchao ~]# awk BEGIN{a100testaa;if(a~/100/) {print ok}}
ok
[rootliuchao ~]# echo|awk BEGIN{a100testaaa}a~/test/{print ok}
ok
[rootliuchao ~]## 关系运算符
[rootliuchao ~]# awk BEGIN{a5;if(a6){print true}}
[rootliuchao ~]# awk BEGIN{a5;if(a5){print true}}
true# 算数运算符 说明所有用作算术运算符进行操作操作数自动转为数值所有非数值都变为0。
[rootliuchao ~]# awk BEGIN{ab;b3;print a,b}
1 4
[rootliuchao ~]## 三目运算符
[rootliuchao ~]# awk BEGIN{a3;print a3?true:false}
true
[rootliuchao ~]# 5、常用内置变量 5.1、字符串分隔符FS
# 测试文件内容
[rootliuchao awk_test]# cat test1.txt
test ab ac ad
testb fd bd gg
testc ii jj www ab
testd ab ff bb dd
# 在BEGIN 模块中设置 分隔符 ”“ 标识多个
[rootliuchao awk_test]# awk BEGIN{FS[ ]}{print $2} test1.txt
ab
fd
ii
ab
# 在BEGIN 模块中设置 分隔符 ”“ 标识多个
[rootliuchao awk_test]# awk BEGIN{FS }{print $2} test1.txt
ab
fd
ii
ab
# 使用-F 选项设置分隔符
[rootliuchao awk_test]# awk -F {print $2} test1.txt
ab
fd
ii
ab
[rootliuchao awk_test]#
5.2、字符串数量
# 测试文件内容
[rootliuchao awk_test]# cat test1.txt
test ab ac ad
testb fd bd gg
testc ii jj www ab
testd ab ff bb dd# 一个或者多个空格分隔后分隔数量等于5个 打印 当前行记录
[rootliuchao awk_test]# awk -F NF5{print $0} test1.txt
testc ii jj www ab
testd ab ff bb dd
[rootliuchao awk_test]#