linux 三剑客awk
时间: 2025-02-08 14:09:02 AIGC 浏览: 48
### Linux 下 `awk` 命令教程
#### 使用场景
`awk` 是一种强大的文本处理工具,在Linux环境下广泛用于解析和操作结构化的文本数据。该命令可以读取文件中的每一行并执行指定的操作,支持模式扫描和处理功能。
#### 基本语法
基本形式如下所示[^2]:
```shell
awk '{print $1}' filename
```
这里 `$1` 表示第一个字段;默认情况下,`awk` 将空白字符作为分隔符来划分每行的内容成不同的字段。
#### 处理多个文件
当需要同时处理两个以上的文件时,可以通过简单的列举文件名实现。为了区分不同文件的数据源,可以在输出中加入当前正在处理的文件名称:
```shell
awk '{ print FILENAME, $0 }' file1.txt file2.txt
```
上述指令会依次打印每个文件的名字及其对应行内容[^1]。
#### 自定义分割符
有时,默认的空格或制表位不足以满足需求,这时可通过 `-F` 参数自定义分隔符。例如以逗号为界线,则写法变为:
```shell
awk -F',' '...' csvfile.csv
```
错误选择分隔符可能导致获取不到预期的结果或是得到额外不需要的信息,因此需谨慎对待这一设置。
#### 格式化输出
对于更复杂的显示格式要求,可利用内置函数 `printf()` 来控制输出样式。比如创建固定宽度列布局的例子:
```shell
netstat -anp | awk '{ printf "%-8s %-8s %-10s\n", $1, $2, $3}'
```
此段脚本将前三个字段分别按照给定长度左对齐排列输出[^3]。
#### BEGIN 和 END 特殊区块
除了针对各行的动作外,还可以通过 `BEGIN{}` 定义程序启动之前要做的准备工作(如初始化变量),以及用 `END{}` 描述整个文档遍历完毕后的总结工作。
```shell
awk 'BEGIN { print "Start processing..." }
pattern { ...actions... }
END { print "...End of process." }'
```
以上就是一些基础却实用的 `awk` 应用实例介绍,希望可以帮助到想要深入了解这项技能的朋友!
阅读全文
相关推荐



















