- 921. Minimum Add to Make Parentheses Valid 使括号有效的最少添加
- 915. Partition Array into Disjoint Intervals 分割数组
- 932. Beautiful Array 漂亮数组
- 940. Distinct Subsequences II 不同的子序列 II
AWK中的数组和 PHP 中的数组类似,既可以是普通数组,也可以是关联数组。也就是说,数组的索引/下标不必是连续的数字。
我们既可以把它当作普通数组那样来用,使用连续的数字作为索引。也可以把它当作关联数组来用,也就是键值对了。
此外,AWK 中的数组不用事先声明数组的大小。数组可以在运行时动态的增常。
AWK中创建数组的语法很简单,创建数组和给数组添加/修改元素的方式语法一样,即
array_name[index] = value
1、 array_name是数组的名字;
2、 index是数组的索引;
3、 value是分配给index下标/索引的值;
访问数组的元素也是通过下标语法
array_name[index]
我们已经知道了创建数组的语法,下面,我们就来创建一个数组,以水果作为键,以水果颜色作为值。
[www.ddkk.com]$ awk 'BEGIN {
fruits["芒果"] = "橘色";
fruits["橘子"] = "黄色"
print fruits["橘子"] "\n" fruits["芒果"]
}'
运行以上 awk 命令,输出结果如下
橘色
黄色
从上面的代码中可以看出,访问数组的方式也很简单,就是使用 array_name[index]
向数组插入元素,我们使用的是 赋值运算符。
而从数组中删除元素,我们可以使用 delete 语句。
delete 关键字用于从数组中删除一个元。
它的语法格式如下
delete array_name[index]
下面的代码,我们使用 delete 语句从数组中删除 orange 元素。
[www.ddkk.com]$ awk 'BEGIN {
fruits["mango"] = "yellow";
fruits["orange"] = "orange";
delete fruits["orange"];
print fruits["orange"]
}'
运行以上 awk 命令,输出结果如下
从输出中可以看到,元素被删除之后,就不存在于数组中了。
AWK仅仅只支持一维数组。也就是不支持多维数组。
但是,我们可以使用一维数组来模拟多维数组。
例如,下面这个 3x3 的二维数组
100 200 300
400 500 600
700 800 900
array[0][0] 存储着值 100,array[0][1] 存储着值 200 ,因此类推...
为了在位置 [0][0] 存储 100, 在 AWK 中可以这么做
array["0,0"] = 100
虽然,看起来我们使用 0,0作为索引,但这些不是两个索引。实际上,它只是一个字符串 "0,0" 的索引。
使用这种方式,我们就可以轻松模拟多维数组
[www.ddkk.com]$ awk 'BEGIN {
array["0,0"] = 100;
array["0,1"] = 200;
array["0,2"] = 300;
array["1,0"] = 400;
array["1,1"] = 500;
array["1,2"] = 600;
# print array elements
print "array[0,0] = " array["0,0"];
print "array[0,1] = " array["0,1"];
print "array[0,2] = " array["0,2"];
print "array[1,0] = " array["1,0"];
print "array[1,1] = " array["1,1"];
print "array[1,2] = " array["1,2"];
}'
运行以上 awk 命令,输出结果如下
array[0,0] = 100
array[0,1] = 200
array[0,2] = 300
array[1,0] = 400
array[1,1] = 500
array[1,2] = 600
通过0,1 这种字符串索引,我们还可以对多维数组执行各种操作,例如对 元素/索引 进行排序。而且,我们还可以使用 assort 和 asorti 函数对数组进行排序
是否可以从 awk 文件执行另一个 awk 文件?使用 awk 文件我需要执行当前文件夹中的所有 awk 文件。是否可以在 awk 中进行此类操作? 最佳答案 是的你可以。您需要使用 system()
这是一个 awk 脚本,它尝试根据第一列设置两个文件的差异: BEGIN{ OFS=FS="\t" file = ARGV[1] while (getline < file)
awk 逐行处理文件。假设每一行操作不依赖于其他行,有没有办法让 awk 一次并行处理多行? 是否有任何其他文本处理工具可以自动利用并行性并更快地处理数据? 最佳答案 唯一试图提供 awk 并行实现的
我有文件: 结果.txt Apple fruits 10 20 30 Car vehicle 40 50 60 Book study 70 80 90 假设这里第 2 列是特征,第 3 列是最小值
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我对 awk 的行为感到惊讶表演时浮点数 计算。它导致我对表格数据进行错误计算。 $ awk 'BEGIN {print 2.3/0.1}' 23 0.1}' )。 那么我应该如何执行大于 (
为什么我在下面的例子中得到分隔符前后的空格? awk -F'^' '{print $1,":",$2}' SERVER_2012-02-29-12-15-00 3969 : 1272 3969 :
我有一个文件,其中每四行是这样的: HISEQ15:454:D27KKACXX:6:2316:16241:100283 1:N:0:GTTTCG (对于那些感兴趣的人,此文件包含DNA序列) 我需
你能帮我按 $2 列中的坐标合并行吗?有一系列坐标以一个为单位增长。我想输出 f.e. :第 1 行合并到第 4 行 9079811-9079814,之后没有系列,因此将其合并到另一行等。对于输入中的
大家好,我是 awk 的新手,我可以问一下我有这样的输入文件吗: # ABC DEFG value1 GH value2 GH value3 GH # BCF SQW value4 GH value5
大家好,我想问一下,我对awk中的括号{}感到非常困惑,就像我写了一段代码 { FNR == 3 { print $1 " age is " $2 } } 但它在外括号上给了我错误但没有在打印语
我想知道如何在 awk 中使用多行注释。到目前为止,我一直在使用 # 来评论一行。有人可以就此指导我。谢谢你。 最佳答案 AWK 中没有多行注释,但如果需要,您可以伪造它。这是一种至少适用于 GNU
关于AND逻辑运算符的一个基本问题。我试图根据第1列和第2列的值提取数据文件niveles.csv中的某些字段。我想写一个awk语句,说“当field1 = date和field2 = area然后打
以下命令按预期工作。 # some command | awk '/(\|\|\)/,/;/' create table todel1 (id int) max_rows=2 /*!*/; alter
我有一个日志文件,需要在服务器上“重播”。 它包含这样的条目: Request: query: EXEC prc_insert_customer @param0: 11
如何从制表符分隔的字符串中选择第一列? # echo "LOAD_SETTLED LOAD_INIT 2011-01-13 03:50:01" | awk -F'\t' '{prin
我正在尝试在目录中的多个文件的内容中执行一些 grep 并将我的 grep 匹配附加到单个文件中,在我的输出中我还想要一个包含文件名的列,以了解哪些文件条目已被拾取。我试图使用 awk 来实现相同的目
我想选择文件中第9列的绝对值小于500的行。列有时为正,有时为负。 awk -F'\t' '{ if ($9 output.bam 到目前为止这不起作用..互联网上的一轮告诉我,要使用绝对值,我们应
例如,假设我运行以下命令: gawk -f AppendMapping.awk Reference.tsv TrueInput.tsv 假设文件名会改变。在遍历第一个文件时,我想创建一个映射。 map
我正在使用这个命令; awk -v regex1='new[[:blank:]]+File\(' 'BEGIN{print "Regex1 =", regex1}' 这警告我; awk: warnin
我是一名优秀的程序员,十分优秀!