📜  AWK-数组(1)

📅  最后修改于: 2023-12-03 15:13:34.224000             🧑  作者: Mango

AWK-数组

什么是AWK?

AWK是一种文本处理工具,可以从文本文件或stdin读取数据,对数据进行处理并输出结果。awk通过读取文件实现操作,并且可以识别处理文本的数据类别,如字段和行。

数组意义

数组是AWK中非常重要的一部分,可用于存储数据或变量。AWK数组是一个有序的数据集合,由键和值组成。数组中的每个元素都有一个唯一的键,用于访问该元素中存储的值。数组的值可以是数字或字符串。

AWK数组可以使用数字或字符串作为键,也可以将数组用作关联数组来存储字符串和数字类型的键值对。

创建数组

可以使用 AWK的 array 命令来创建数组,例如:

array[key] = value

此命令将一个数组元素(带有“键”和“值”)添加到数组中。 key 是数组的键,而 value 是将存储在这个键下的值。例如:

awk '{
  array["Name"] = "John";
  array["Age"] = 30;
  print "Name is " array["Name"] "and Age is " array["Age"]
}' file.txt

输出结果:

Name is John and Age is 30
遍历数组

为了遍历数组中的所有元素,可以使用 for 循环并使用 AWK 的 built-in in 命令。in 命令用于获取数组中的键。例如:

awk '{
  array["John"] = 30;
  array["Peter"] = 35;
  for (name in array)
    print name " is " array[name] " years old."
}' file.txt

输出结果:

John is 30 years old.
Peter is 35 years old.
数组排序

AWK数组的默认排序是根据键的插入顺序设置的。但是,可以使用AWK的内置 asorti 命令按键的值进行排序。

例如:

awk '{
  array["John"] = 30;
  array["Peter"] = 35;
  array["Linda"] = 25;
  asorti(array, new_array);
  for (i in new_array) {
    name = new_array[i];
    print name " is " array[name] " years old.";
  }
}' file.txt

输出结果:

John is 30 years old.
Linda is 25 years old.
Peter is 35 years old.
结论

AWK的数组是一种非常强大的功能,使您可以轻松地存储、处理和排序数据。掌握AWK数组的基本知识可以大大提高您的文本处理技能。