深入浅出awk命令

简介

  • 其实一门编程语言,支持条件判断,数组,循环等功能,与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

Supongo que te gusta

Origin blog.csdn.net/u011277745/article/details/127504458
Recomendado
Clasificación