我首先需要构建一个 time的关联数组,比如time[2010-01-01]=1;
第一个遇到的问题就是
cat timeItem |while read item ;
do
time[$item]=0
done
使用这样的方法在后面使用time关联数组的时候一直是 空的。
原因: 使用管道的方式会开辟一个新的进程,估计time 是一个新的副本传入过去所以改变的值没有效果,
这是用管道编程的时候必须要注意;
使用如下方式就可以解决:
while read item ;
do
time[$item]=0
done < timeItem.txt
在构建好time数组之后就是要考虑如何传入到awk 中,
网络上的说的使用 -v arry = "$time" 这种方式是不行的,
可行的方案就是 获得 time 的键的字符串,和 time的值得字符串,然后在 awk的 BEGIN{}语句中进行split划分在构建出 time 关联数组,代码如下:
cat $fileName|awk -F, -v s1="${time[*]}" -v s2="${!time[*]}" '
BEGIN{split(s1,s3," ");split(s2,s4," ");for (i=1;i<=length(s4);i++) res[s4[i]]=s3[i];}
相关推荐
前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法。前两天在QQ群里讨论awk的时候,无意间又聊起这个话题。机缘巧合之下找到一个思路,特此分享。 测试环境...
`awk`的内建变量如`ARGV`, `ARGVIND`, `FNR`, `NR`等,可以与数组一起使用,为数据分析提供便利。例如,`ARGV`数组包含了所有命令行参数,而`FNR`跟踪当前文件中的记录数。 6. **数组应用示例** - 数据统计:使用...
- **数组处理**:AWK支持关联数组,可以方便地进行统计分析。 3. **Shell编程** - **Shell介绍**:Shell是Unix系统中的命令解释器,允许用户输入命令并执行。常见的有Bash(Bourne-Again SHell)。 - **脚本编写...
在 awk 中数组叫做关联数组(associative arrays),因为下标记可以是数也可以是串。awk 中的数组不必提前声明,也不必声明大小。数组元素用 0 或空串来初始化,这根据上下文而定。例如: 一、定义方法 1:可以...
6. **数组**:Awk支持关联数组,可以在处理数据时存储和查找特定值。 例如,一个简单的Shell脚本可能这样使用Awk: ```bash #!/bin/bash # 计算一个文件中单词出现次数 cat file.txt | awk '{for(i=1; i; i++) {a[$...
在Shell脚本编程中,`awk`是一种强大的文本分析工具,尤其在处理文件时非常有用。...通过构建适当的数组结构和条件判断,我们可以解决多种文件处理问题,尤其在需要关联多个文件数据的情况下,`awk`数组显得尤为重要。
- **awk读取Shellscript程序变量**:awk可以从shell脚本中读取变量值。 - **将shell命令的执行结果送给awk处理**:通过管道将shell命令的输出传递给awk进行进一步处理。 - **shellscript程序读awk的执行结果**:awk...
这次主要说下,怎么样把外部变量传入到awk执行语句中。 一、基础: awk [ -F re] [parameter…] [‘pattern {action}’ ] [-f progfile][in_file…] awk一般语法如上面所说。 如: 代码如下:[chengmo@
awk的数组可以使用任意字符串作为下标,这使得awk的数组本质上是关联数组。即使使用数字作为下标,awk也会将其转换为字符串形式。例如: ```bash awk 'BEGIN{ arr["apple"]="fruit"; arr["carrot"]="vegetable...
"awk_unix.shell"标签表明AWK是作为UNIX Shell的一部分使用的,通常与其他shell命令如grep、sed等结合使用,形成强大的数据处理流程。在Shell脚本中,AWK可以用来处理复杂的数据操作,而无需编写完整的程序。 "awk...
awk 被设计用来处理样式扫描和数据处理任务,类似于 sed 和 grep,但它拥有更广泛的功能,包括样式装入、流程控制、数学运算、内置变量和函数,以至于形成了自己的编程语言——awk 程序设计语言。 awk 的主要功能...
SHELL中的变量分为用户自定义变量、环境变量和只读变量。 - **用户自定义变量**:用户可以自由定义和修改的变量。 - **环境变量**:全局的,对所有子进程可见,如`PATH`定义了可执行文件的搜索路径。 - **只读变量*...
Shell脚本之awk篇主要介绍了awk工具在Linux/Unix系统下进行文本和数据处理的应用。awk是一种编程语言,特别适合于对文本文件进行分析和处理,它可以读取标准输入、文件或管道中的数据。awk的名称来源于其创始人...
- **数组类型**:AWK支持两种类型的数组:普通数组和关联数组。普通数组的索引通常是整数,而关联数组可以使用字符串作为索引。 - **数组操作**:可以通过索引来访问和修改数组元素,还可以使用`length()`函数获取...
### Linux Shell 实现多维数组的最大值与最小值 在 Linux 环境下,处理文本数据是一项常见的任务。Shell 脚本提供了一种强大的工具来操作文件内容,包括数组和其他复杂的数据结构。本文将详细介绍如何使用 Linux ...
- -v:定义变量,用于从shell中向awk脚本传递变量。 - -fprogfile:调用并执行指定的程序文件,该文件应符合awk语法。 awk内置变量包括: - ARGC:表示命令行参数的个数。 - ARGV:表示命令行参数数组。 - ARGIND:...
awk可以处理复杂的模式匹配和执行算术运算,同时支持变量、条件语句和循环结构。awk读取输入的数据,通常是由空格或制表符等分隔符分隔的文本行,然后将其分割成多个字段,并使用自定义的脚本对这些字段进行各种操作...
本文档将深入分析 awk 的使用和实现机制,探讨 awk 的内置变量、指令和函数,并通过实践示例加深理解。 awk 的内置变量 awk 提供了多种内置变量,用于存储和处理数据。这些变量包括: * ARGC:命令行参数个数 * ...