Post

Linux awk 基础命令

awk

awk 是一种用于处理文本数据的命令行工具,它可以用来从文件或者管道中读取数据,并对其进行格式化、转换、过滤和计算等操作。下面是一个简单的 awk 命令使用指南:

1. 基础语法

1
awk [options] 'pattern { action }' file(s)

其中,pattern 表示匹配模式,action 表示要执行的动作。如果没有指定 pattern,则默认匹配所有行。file(s) 表示输入文件名,可以指定多个文件。

2. 使用变量

awk 中有一些内置变量,可以用于获取当前正在处理的行或者列的信息。例如:

  • $0 表示整个行内容;
  • $1 表示第一个字段(以空格分隔);
  • $NF 表示最后一个字段;
  • NR 表示当前行号;
  • NF 表示当前行的字段数。

在 awk 中,可以使用这些变量来进行行或者列的处理和计算。

3. 常用操作

以下是 awk 常用的操作:

  • 打印行:awk '{print}' file.txt
  • 按条件过滤行:awk '/pattern/ {print}' file.txt
  • 格式化输出:awk '{printf "%s %s\n", $1, $2}' file.txt
  • 计算行数:awk 'END {print NR}' file.txt
  • 计算平均值:awk '{sum+=$1; count++} END {print sum/count}' file.txt
  • 按分隔符处理:awk -F',' '{print $1, $NF}' file.txt

4. 常用选项

以下是 awk 常用的一些选项:

  • -F<separator> 指定分隔符;
  • -v var=value 定义变量;
  • -f script.awk 指定脚本文件。

例如,可以使用以下命令从 CSV 文件中提取第一列和最后一列:

1
awk -F ',' '{print $1, $NF}' file.csv

也可以将选项和脚本组合起来使用,例如:

1
awk -F ',' -v threshold=90 '{if ($3 > threshold) print $0}' file.csv

这个命令会读取 file.csv 文件,并根据逗号分隔符解析每一行数据。然后根据变量 threshold 进行过滤,如果第三列的值大于 threshold,则输出整行数据。

This post is licensed under CC BY 4.0 by the author.