Linux awk命令教程:如何有效处理文本和数据分析(附案例详解和注意事项)

发布时间:2023年12月27日

Linux awk命令介绍

awk是一个强大的文本分析工具,其本质上是一个数据驱动式的脚本语言,用于处理文本,并对文本进行诸如生成报告等各种操作。这是一个强大的Linux命令行程序,用于处理和分析文本文件,特别是那些对文本格式有严格要求或者表格化的文件。

Linux awk命令适用的Linux版本

awk命令在大多数Linux版本中都可使用。对于某些可能没有预装该命令的Linux发行版,可通过以下的安装命令进行安装:

  • Debian/Ubuntu系统下使用以下命令安装:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install gawk
  • CentOS7或RHLE7可以使用yum进行安装:
[linux@bashcommandnotfound.cn ~]$ sudo yum install gawk
  • CentOS8或RHLE8可以使用dnf来安装:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install gawk

Linux awk命令的基本语法

awk命令的基本语法如下:

awk [options] 'script' var=value file

此处options是命令选项,'script’表示awk程序,var=value设定awk程序中的变量,而file则为输入的文件名称。

Linux awk命令的常用选项或参数说明

awk命令的常用选项:

选项解释
-f file从文件file中读取awk脚本
-F fs设置输入字段分隔符,等同于BEGIN{FS=“fs”}
-v var=value设置变量
-m[fr] mf设置字符串最大数目

Linux awk命令的实例

实例1:打印所有行

这个例子基本没什么用,但它是一个很好的awk语法介绍。

[linux@bashcommandnotfound.cn ~]$ awk '{ print }' file

实例2:打印特定字段

我们可以使用awk命令来打印文本的特定字段2。

[linux@bashcommandnotfound.cn ~]$ awk '{ print $1 }' file

实例3:打印文件的行数

这个例子展示了如何使用awk命令来打印一个文件的行数。

[linux@bashcommandnotfound.cn ~]$ awk 'END { print NR }' file

实例4:使用分隔符

这个例子展示了如何使用-F选项来指定输入字段的分隔符。

[linux@bashcommandnotfound.cn ~]$ awk -F: '{ print $1 }' /etc/passwd

实例5:使用多个命令

这个例子展示了如何在一个awk命令中使用多个命令。

[linux@bashcommandnotfound.cn ~]$ awk '/pattern1/ { action1 } /pattern2/ { action2 }' file

实例6:使用变量

这个例子展示了如何在awk命令中使用变量。

[linux@bashcommandnotfound.cn ~]$ awk -v var=value 'BEGIN { print var }'

实例7:使用内建变量

这个例子展示了如何在awk命令中使用内建变量。

[linux@bashcommandnotfound.cn ~]$ awk '{ print NR, $0 }' file

实例8:使用条件语句

这个例子展示了如何在awk命令中使用条件语句。

[linux@bashcommandnotfound.cn ~]$ awk '{ if ($1 > max) max = $1 } END { print max }' file

实例9:使用循环语句

这个例子展示了如何在awk命令中使用循环语句。

[linux@bashcommandnotfound.cn ~]$ awk 'BEGIN { for (i = 1; i <= 5; i++) print i }'

实例10:使用函数

这个例子展示了如何在awk命令中使用函数。

[linux@bashcommandnotfound.cn ~]$ awk '{ print length($0) }' file

实例11:使用数组

这个例子展示了如何在awk命令中使用数组。

[linux@bashcommandnotfound.cn ~]$ awk '{ arr[$1]++ } END { for (i in arr) print i, arr[i] }' file

实例12:使用正则表达式

这个例子展示了如何在awk命令中使用正则表达式。

[linux@bashcommandnotfound.cn ~]$ awk '/pattern/ { print $0 }' file

实例13:使用BEGIN和END块

这个例子展示了如何在awk命令中使用BEGIN和END块。

[linux@bashcommandnotfound.cn ~]$ awk 'BEGIN { print "Start" } { print $0 } END { print "End" }' file

实例14:使用内建函数

这个例子展示了如何在awk命令中使用内建函数。

[linux@bashcommandnotfound.cn ~]$ awk '{ print substr($0, 1, 5) }' file

实例15:使用多个文件

这个例子展示了如何在awk命令中处理多个文件。

[linux@bashcommandnotfound.cn ~]$ awk '{ print FILENAME, $0 }' file1 file2

Linux awk命令的注意事项

  1. 注意分隔符的正确选择,错选分隔符可能会导致漏取或者取多字段
  2. 注意排版问题,awk命令的输出直接与输入文件的排版有关
  3. 如果遇到bash: awk: command not found,你可能需要安装awk。具体安装方法参见本文的“Linux awk命令适用的Linux版本”部分。

Linux awk相关命令

sed命令 - sed命令也是一种处理文本文件的命令,比如插入、删除、替换文本中的字符串等。
grep命令 - grep命令用于在文本文件中搜索包含指定规则的行,然后返回结果。
sort命令 - sort命令用于排序文本文件中的行。
cut命令 - cut命令用于从文件的每行剪切字节、字符和字段并将这些字节、字符和字段输出。
paste命令 - paste命令用于合并文件的行。
join命令 - join命令用于在一行中将两个文件的字段结合起来。
uniq命令 - uniq命令用于在排序的文件中报告或省略重复行。
cat命令 - cat命令用于串联和打印文件。
touch命令 - touch命令用于修改文件或目录的时间戳,如果文件不存在,会创建一个新的空文件。
grep命令 - grep命令用于在文本中搜索匹配的字符模式。

更多详细内容可以参考:
linux入门学习教程 - Linux入门自学网
Linux awk命令详解:一种对文本文件进行分析、过滤、转换的处理工具

文章来源:https://blog.csdn.net/u012964600/article/details/135199534
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。