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.