Linux awk命令的日常使用及介绍

Linux-awk命令的日常使用及介绍

awk:是一门模式扫描和处理的语言—》专门进行文本的截取的工具、小数的计算

在Linux里的英文解释:
gawk - pattern scanning and processing language

awk的工作原理

一行一行的读取,将一行分成数个字段来处理

awk的完整语法

awk ‘BEGIN{commands}pattern{commands}END{commands}’

注意:

  • BEGIN后面的花括号里面的内容为处理数据前执行的命令就执行一次
  • pattern部分可以写匹配规则,若匹配, 则执行后面花括号中的语句,每一行都会执行
  • END后面的花括号里面的内容为处理完数据后执行的命令就执行一次

示例:

awk -F: 'BEGIN{print "##start##"}/bash/{print $0}END{print "##end##"}' /etc/passwd

结果如图:
Linux awk命令的日常使用及介绍_第1张图片
在一般使用中,只用到中间部分,即不使用BEGIN和END部分

awk的数据字段变量

awk处理一行数据的时候,把一行数据分成一个一个的字段,其中:

  • $0表示整行文本
  • $1表示文本中第一个数据字段
  • $2表示文本中第二个数据字段
  • $n表示文本中第n个数据字段

awk的内置变量

  • FS(filed separater):当前的分隔符,默认是空白字符
  • OFS(output filed separater):当前的输出分隔符,默认是一个空格字符
  • NR(number of record):当前处理的行号
  • NF(number of field):字段数,$NF表示最后一个字段

awk的常用选项

-F:用来指定分隔符,可以指定多个分隔符(例如 -F’[: /]’)

  • FS:filed separater,输入分隔符,默认是空白(空格或者tab)
    例如:awk -F: ‘$3<=3{print $1,$2,$3}’ /etc/passwd
    Linux awk命令的日常使用及介绍_第2张图片
  • OFS:output filed separater,输出分隔符,默认为空格
    例如:awk -F: ‘BEGIN{OFS="#"}$3<=3{print $1,$2,$3}’ /etc/passwd
    在这里插入图片描述

-v:引入shell变量,即可以在awk里面使用外部shell变量

  • 例如:echo | awk -v t=$test ‘{print t}’
    Linux awk命令的日常使用及介绍_第3张图片
    这里推一个可以查询Linux各种命令使用方法的网站:
    https://wangchujiang.com/linux-command/

你可能感兴趣的:(linux)