awk命令

​Awk​​​是一种用于高级文本处理的通用脚本语言,其主要用作报告和分析工具,与大多数其他程序性编程语言不同,​​Awk​​是数据驱动的,也就是说需要定义一组针对输入文本要执行的操作,然后其获取输入数据,对其进行转换,然后将结果发送到标准输出。

语法

awk [ -F fs ] [ -v var=value ] [ 'prog' | -f progfile ] [ file ... ]

参数

  • ​-F fs​​​: 将输入字段分隔符设置为正则表达式​​fs​​。
  • ​-v var=value​​​: 在执行​​awk​​​程序之前,将值赋值给变量​​var​​。
  • ​'prog'​​​:​​awk​​程序。
  • ​-f progfile​​​: 指定文件​​progfile​​​,其中包含要执行的​​awk​​程序。
  • ​file ...​​​: 由指定的​​awk​​程序处理的文件。

示例

示例文件​​example.txt​​文件内容如下:

Bucks Milwaukee    60 22 0.732 
Raptors Toronto 55 24 0.707
76ers Philadelphia 51 31 0.622
Celtics Boston 33 33 0.598
Pacers Indiana 30 34 0.585

输出​​example.txt​​​的第​​3​​个字段。

awk '{ print $3 }' example.txt
# 60
# 55
# 51
# 33
# 30

使用正则表达式匹配出以​​R​​开头的组。

awk '/^R/ { print $1,$2,$3,$4 }' example.txt
# Raptors Toronto 55 24

使用​​BEGIN​​​以及​​END​​​输出在处理记录之前与之后执行的操作,处理过程为输出第二个字段包含​​Tor​​的组。

awk 'BEGIN { print "Start Processing" }; $2 ~ /Tor/ {print $1,$2,$3,$4 }; END { print "End Processing" }' example.txt
# Start Processing
# Raptors Toronto 55 24
# End Processing

每日一题

https://github.com/WindrunnerMax/EveryDay

参考

https://linuxize.com/post/awk-command/
https://www.computerhope.com/unix/uawk.htm
https://www.runoob.com/linux/linux-comm-awk.html