简介
- 其实一门编程语言,支持条件判断,数组,循环等功能,与grep,sed被称为linux三剑客
- 之所以叫AWK是因为取其三位创始人 Alfred Aho,Peter Weinberger 和 Brian Kernighan 的Family Name的首字符
awk的应用场景
- 通常对数据进行列的提取
awk '条件 {执行动作}'文件名 或者 awk ‘条件1 {执行动作} 条件2 {执行动作} …’ 文件名
或者 awk [选项] ‘条件1 {执行动作} 条件2 {执行动作} …’ 文件名
要点说明
- printf :格式化输出,不会自动换行.
%ns:字符串型,n代表有多少个字符.
%ni:整型,n代表输出几个数字.
%.nf:浮点型,n代表的是小数点后有多少个小数.
- print :打印出内容,默认会自动换行.
- \t :制表符
- \n :换行符
lelontar@bogon ~/Downloads printf "%s %s %s\n" 1231 2321 3441 4551 5661 6771
1231 2321 3441
4551 5661 6771
- awk 基本用法
lelontar@bogon ~/Downloads df -h | grep '/dev/disk1s1s1' | awk '{printf "/dev/disk1s1s1使用空间是:"} {print $5}'
/dev/disk1s1s1使用空间是:5%
- 「 1... 1... 1...n代表第几列」「$0代表整行」
lelontar@bogon ~/Downloads df -h | grep '/dev/disk1s1s1' | awk '{print $5}'
5%
lelontar@bogon ~/Downloads df -h | grep '/dev/disk1s1s1' | awk '{print $0}'
/dev/disk1s1s1 466Gi 14Gi 315Gi 5% 568975 4881883905 0% /
- 「-F」:指定分隔符
lelontar@bogon ~/Downloads cat passwd.txt|awk -F":" '{print $2}'
*
*
*
*
*
*
*
*
*
*
- NR :行号
lelontar@bogon ~/Downloads cat passwd.txt| awk '(NR>=2&&NR<=4){print $0}' ✔ 11:22:28
_logd:*:272:272:Log Daemon:/var/db/diagnostics:/usr/bin/false
_appinstalld:*:273:273:App Install Daemon:/var/db/appinstalld:/usr/bin/false
_installcoordinationd:*:274:274:Install Coordination Daemon:/var/db/installcoordinationd:/usr/bin/false
lelontar@bogon ~/Downloads df -h |awk '(NR>=2 && NR<=4){print $3}'
14Gi
189Ki
4.0Gi
- BEGIN :在读取所有行内容前就开始执行,常常被用于修改内置变量的值
- FS:BEGIN时定义分割符
lelontar@bogon ~/Downloads cat passwd.txt | awk 'BEGIN {FS=":"} {print $1}'
_diskimagesiod
_logd
_appinstalld
_installcoordinationd
_demod
_rmd
_fud
_knowledgegraphd
_coreml
_oahd
- END :结束的时候执行
lelontar@bogon ~/Downloads cat passwd.txt | awk 'BEGIN {FS=":"} {print $1} END{print $3}'
_diskimagesiod
_logd
_appinstalld
_installcoordinationd
_demod
_rmd
_fud
_knowledgegraphd
_coreml
_oahd
441
- 使用-F “”
grep "SpeedFeedMatchPicServiceImpl jsonResultData end query:" speedDetail.log |awk -F"," '{print $1}'|less