awk – 文本处理工具

1、简介

awk 是一种强大的文本处理工具,特别适用于处理结构化的数据,如表格或日志文件。它是 “Aho, Weinberger, and Kernighan” 的缩写,这三位是 awk 的原始作者。awk 可以在命令行中使用,也可以编写脚本来进行复杂的文本处理和数据分析。

2、基本用法

awk 的基本语法如下:

awk [选项] [脚本] [输入文件]
  • 选项:控制 awk 的行为。
  • 脚本:包含一个或多个 awk 命令。
  • 输入文件:要处理的文件。如果未指定文件,sed 会从标准输入读取数据。

3、常用选项

  • -F:指定字段分隔符。
  • -v:定义变量。
  • -f:从文件中读取脚本。

4、基本概念

  • 记录awk 将输入的每一行视为一个记录。
  • 字段:每一行(记录)被分隔成多个字段,默认分隔符是空格或制表符。
  • 模式:用于匹配记录的条件。
  • 动作:对匹配的记录执行的操作。

5、实战示例

一、 基本用法

1、 打印文件的某一列

[root@localhost ~]# ls -l                            ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt                    ### 查看file1.txt的内容
[root@localhost ~]# awk '{print $1}' file1.txt       ### 将file1.txt文件中第一列打印出来。
[root@localhost ~]# cat file1.txt                    ### 查看file1.txt的内容,实际并未修改。

awk - 文本处理工具

2、 使用自定义分隔符

[root@localhost ~]# ls -l                               ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt                       ### 查看file1.txt的内容
[root@localhost ~]# awk -F, '{print $2}' file1.txt      ### 使用逗号作为字段分隔符,打印第2列字段
[root@localhost ~]# cat file1.txt                       ### 查看file1.txt的内容,实际并未修改

awk - 文本处理工具

3、 计算列的总和

[root@localhost ~]# ls -l                                                         ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt                                                 ### 查看file1.txt的内容
[root@localhost ~]# awk -F, '{sum += $2} END {print sum}' file1.txt               ### 计算第二列的总和,并打印出来
[root@localhost ~]# cat file1.txt                                                 ### 查看file1.txt的内容,实际并未修改

awk - 文本处理工具

4、 条件过滤

[root@localhost ~]# ls -l                                                         ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt                                                 ### 查看file1.txt的内容
[root@localhost ~]# awk -F, '$2 > 100 {print $0}' file1.txt                       ### 打印第二列大于100的行
[root@localhost ~]# cat file1.txt                                                 ### 查看file1.txt的内容,实际并未修改

awk - 文本处理工具

5、 多条件过滤

[root@localhost ~]# ls -l                                                      ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt                                              ### 查看file1.txt的内容
[root@localhost ~]# awk -F, '$2 > 100 && $3 == "red" {print $0}' file1.txt     ### 打印第二列大于100,且第三列是red的行
[root@localhost ~]# cat file1.txt                                              ### 查看file1.txt的内容,实际并未修改

awk - 文本处理工具

6、 定义变量

[root@localhost ~]# ls -l                                                         ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt                                                 ### 查看file1.txt的内容
[root@localhost ~]# awk -v var="hello,world!" -F, '{print var, $1}' file1.txt     ### 定义变量 var 并打印 file1.txt 文件的第一列和变量值。
[root@localhost ~]# cat file1.txt                                                 ### 查看file1.txt的内容,实际并未修改

awk - 文本处理工具

7、 复杂脚本

[root@localhost ~]# ls -l                                                         ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt                                                 ### 查看file1.txt的内容
[root@localhost ~]# awk 'BEGIN {FS=","; OFS=":"} {print $1, $2, $3}' file1.txt    ### 使用逗号作为输入分隔符,冒号作为输出分隔符,打印 file1 文件的第一、第二和第三列。
[root@localhost ~]# cat file1.txt                                                 ### 查看file1.txt的内容,实际并未修改

awk - 文本处理工具


原文始发于微信公众号(奶嘴很忙):awk – 文本处理工具

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/303662.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!