说明
Awk 语法和基本命令
awk
是一种用于操作和处理文本文件的强大语言。 当文本文件中采用行记录格式时,它特别有用,
即,当每行(记录)包含多个由定界符
分隔的字段时。 即使输入文件不是行记录格式,
您也可以仍然使用 awk
做一些基本的文件和数据处理。 即使没有输入文件,也可以使用 awk
编写编程逻辑进行处理。
简而言之,AWK
是一种可以在完成日常工作中派上用场的强大语言。
Awk
上的学习曲线要比其他任何语言小的多,如果您已经了解 C
编程,
你会体会到学习 AWK
是多么简单和容易。
AWK
最初由三位开发人员编写– A.Aho
, B.W.Kernighan
and P.Weinberger
。
所以, AWK
这个名字来自于这三位开发者的姓名缩写。
Awk 变体
以下是 AWK 的三个变体:
AWK
是原始的 awkNAWK
是新 awkGAWK
是 GNU AWK,所有 Linux 发行版都附带GAWK
。这与AWK
和NAWK
完全兼容。
本教程涵盖了原始 AWK
的所有基础知识,以及一些仅在 GAWK
中可用的高级功能。
在具有无论安装了 NAWK
或 GAWK
的系统,您仍然可以键入 awk
,这将相应地调用 nawk
或 gawk
。
例如,在 Linux 上,您将看到 awk
是 gawk 的符号链接。因此,在Linux系统上执行 awk(或)gawk 将调用 gawk。
$ ls -l /bin/awk /bin/gawk
lrwxrwxrwx 1 root root 4 Sep 1 07:38 /bin/awk -> gawk
-rwxr-xr-x 1 root root 320416 Mar 14 2019 /bin/gawk
employee.txt
employee.txt
是一个由逗号分隔的文件,包含 5 名员工记录,格式如下:
employee-number,employee-name,employee-title
创建文件如下:
$ cat << EOF > employee.txt
101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager
EOF
items.txt
items.txt
是一个逗号分隔的文本文件,包含 5 条项目记录,采用以下格式:
item-number,item-description,item-category,cost,quantityavailable
创建文件如下:
$ cat << EOF > items.txt
101,HD Camcorder,Video,210,10
102,Refrigerator,Appliance,850,2
103,MP3 Player,Audio,270,15
104,Tennis Racket,Sports,190,20
105,Laser Printer,Office,475,5
EOF
items-sold.txt
items-sold.txt
是一个由空格分隔的文本文件,包含 5 条项目记录,每条记录针对一个特定商品,其中包含商品编号,后跟该月(过去 6 个月)销售的商品数量。
因此,您将在每条记录中看到 7 个字段。 字段 1
是项目编号。 字段 2
到字段 7
是过去 6 个月内每月销售的商品总数。
以下是items-sold.txt
文件的格式:
item-number qty-sold-month1 qty-sold-month2 qty-sold-month3 qty-sold-month4 qty-sold-month5 qty-sold-month6
创建文件如下:
$ cat << EOF > items-sold.txt
101 2 10 5 8 10 12
102 0 1 4 3 0 2
103 10 6 11 20 5 13
104 2 3 4 0 6 5
105 10 2 5 7 12 6
EOF