`
sunlujing
  • 浏览: 180074 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

awk 传入关联数组 shell变量作用域

 
阅读更多

我首先需要构建一个 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];}

 

1
3
分享到:
评论
2 楼 sunlujing 2013-08-04  
bruce.yuan 写道
没明白你这是要干嘛

主要就是记录下 如何awk 如何引用 shell中的关联数组~
1 楼 bruce.yuan 2013-08-04  
没明白你这是要干嘛

相关推荐

    linux Shell脚本里面把一个数组传递到awk内部进行处理

    前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法。前两天在QQ群里讨论awk的时候,无意间又聊起这个话题。机缘巧合之下找到一个思路,特此分享。 测试环境...

    awk数组实战

    `awk`的内建变量如`ARGV`, `ARGVIND`, `FNR`, `NR`等,可以与数组一起使用,为数据分析提供便利。例如,`ARGV`数组包含了所有命令行参数,而`FNR`跟踪当前文件中的记录数。 6. **数组应用示例** - 数据统计:使用...

    Unix基础、AWK、SHELL

    - **数组处理**:AWK支持关联数组,可以方便地进行统计分析。 3. **Shell编程** - **Shell介绍**:Shell是Unix系统中的命令解释器,允许用户输入命令并执行。常见的有Bash(Bourne-Again SHell)。 - **脚本编写...

    Linux Awk数组操作详细介绍

    在 awk 中数组叫做关联数组(associative arrays),因为下标记可以是数也可以是串。awk 中的数组不必提前声明,也不必声明大小。数组元素用 0 或空串来初始化,这根据上下文而定。例如:  一、定义方法  1:可以...

    shell awk实用实例教程

    6. **数组**:Awk支持关联数组,可以在处理数据时存储和查找特定值。 例如,一个简单的Shell脚本可能这样使用Awk: ```bash #!/bin/bash # 计算一个文件中单词出现次数 cat file.txt | awk '{for(i=1; i; i++) {a[$...

    用awk数组处理两个文件

    在Shell脚本编程中,`awk`是一种强大的文本分析工具,尤其在处理文件时非常有用。...通过构建适当的数组结构和条件判断,我们可以解决多种文件处理问题,尤其在需要关联多个文件数据的情况下,`awk`数组显得尤为重要。

    awk命令详解大全

    - **awk读取Shellscript程序变量**:awk可以从shell脚本中读取变量值。 - **将shell命令的执行结果送给awk处理**:通过管道将shell命令的输出传递给awk进行进一步处理。 - **shellscript程序读awk的执行结果**:awk...

    linux shell awk获得外部变量(变量传值)简介

    这次主要说下,怎么样把外部变量传入到awk执行语句中。 一、基础: awk [ -F re] [parameter…] [‘pattern {action}’ ] [-f progfile][in_file…] awk一般语法如上面所说。 如: 代码如下:[chengmo@

    Linux中的awk数组的基本使用方法

    awk的数组可以使用任意字符串作为下标,这使得awk的数组本质上是关联数组。即使使用数字作为下标,awk也会将其转换为字符串形式。例如: ```bash awk 'BEGIN{ arr["apple"]="fruit"; arr["carrot"]="vegetable...

    AWK编程实例指南.rar_AWK ns2_awk_awk unix.shell_awk编程实例

    "awk_unix.shell"标签表明AWK是作为UNIX Shell的一部分使用的,通常与其他shell命令如grep、sed等结合使用,形成强大的数据处理流程。在Shell脚本中,AWK可以用来处理复杂的数据操作,而无需编写完整的程序。 "awk...

    awk 介绍,unix shell

    awk 被设计用来处理样式扫描和数据处理任务,类似于 sed 和 grep,但它拥有更广泛的功能,包括样式装入、流程控制、数学运算、内置变量和函数,以至于形成了自己的编程语言——awk 程序设计语言。 awk 的主要功能...

    shell、awk编程教材

    SHELL中的变量分为用户自定义变量、环境变量和只读变量。 - **用户自定义变量**:用户可以自由定义和修改的变量。 - **环境变量**:全局的,对所有子进程可见,如`PATH`定义了可执行文件的搜索路径。 - **只读变量*...

    Shell脚本之awk篇

    Shell脚本之awk篇主要介绍了awk工具在Linux/Unix系统下进行文本和数据处理的应用。awk是一种编程语言,特别适合于对文本文件进行分析和处理,它可以读取标准输入、文件或管道中的数据。awk的名称来源于其创始人...

    AWK AWK 详细使用文档

    - **数组类型**:AWK支持两种类型的数组:普通数组和关联数组。普通数组的索引通常是整数,而关联数组可以使用字符串作为索引。 - **数组操作**:可以通过索引来访问和修改数组元素,还可以使用`length()`函数获取...

    linux shell实现求一个多维数组中的最大和最小值

    ### Linux Shell 实现多维数组的最大值与最小值 在 Linux 环境下,处理文本数据是一项常见的任务。Shell 脚本提供了一种强大的工具来操作文件内容,包括数组和其他复杂的数据结构。本文将详细介绍如何使用 Linux ...

    linux-shell脚本命令:awk命令简介

    - -v:定义变量,用于从shell中向awk脚本传递变量。 - -fprogfile:调用并执行指定的程序文件,该文件应符合awk语法。 awk内置变量包括: - ARGC:表示命令行参数的个数。 - ARGV:表示命令行参数数组。 - ARGIND:...

    awk sed3 linux shell

    awk可以处理复杂的模式匹配和执行算术运算,同时支持变量、条件语句和循环结构。awk读取输入的数据,通常是由空格或制表符等分隔符分隔的文本行,然后将其分割成多个字段,并使用自定义的脚本对这些字段进行各种操作...

    linux中shell脚本中awk的深入分析

    本文档将深入分析 awk 的使用和实现机制,探讨 awk 的内置变量、指令和函数,并通过实践示例加深理解。 awk 的内置变量 awk 提供了多种内置变量,用于存储和处理数据。这些变量包括: * ARGC:命令行参数个数 * ...

Global site tag (gtag.js) - Google Analytics