`
fantaxy025025
  • 浏览: 1279325 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

awk引用外部变量

 
阅读更多

=

对引用的文做了格式修改和字符串修正。

增加了自己的例子.

 

实际应用:

比如我的脚本如下:

 

awk -F"," '{if($4 > _max_exe_time_) print $4","$0}' _max_exe_time_=$_max_exe_time_   My-File.txt

=

awk引用外部变量 

from:

http://www.cnblogs.com/mydomain/archive/2012/09/24/2699467.html

https://blog.csdn.net/wangweiran1/article/details/38272797

 

 

一、用awk 有以下几种方法去调用变量:

1.  awk '{print a, b}' a=111 b=222 yourfile

注意变量位置要在 file 名之前否则就不能调用。

还有BEGIN{}中是不能调用这些的variable. 要用之后所讲的第二种方法才可解决.

2.  awk -v a=111 -v b=222 '{print a,b}' yourfile

注意对每一个变量加一个 -作传递

3.  awk '{print " ' "$LOGNAME" ' "}' yourfile  (这种方法比较雷,一般不用了)

如果想调用environment variable, 要用以上的方式调用方法是:

"  '  "  $LOGNAME  "  '  "

原文:

awk如何引用外部变量

http://hi.baidu.com/icqncvjhgmbbsyq/item/02ef096ac1d49c94c5d2495a

二、进一步解释

3种方法为什么要加两个双引号和一个单引号?

$ str=Hello

$ awk 'BEGIN{print " '$str' "}'

Hello

看上去是双引号套单引号,其实真正的原因为:

这是shell的功能,shell对单引号和双引号,按从左到右的顺序成对匹配

awk命令用单引号引起来,就是防止shell对其中内容进行解释

awk '{print " '$str' "}' file

实际上就是2部分

1:awk '{print " '

2:'"}'

awk2个单引号内的命令起作用。

至于$str就被shell正常解释为变量str的值。

所以,如果str=hello,则经解释后成为,awk {print "hello"}file

而如果str=hello world,则解释时,在解释前一部分:awk {print " 后,在替换了变量后,变成了hello world,当shell读到helloworld中间的空格时,认为这是IFS,于是,把他们放在于不同的域中,这样解释成了:

awk BEGIN{print "hello

world"}两部分。

按照上面的解释,就可以这么来修改,比如

a)$ awk 'BEGIN{print " ' "$a" ' "}'

或者

b)$ awk "BEGIN{print \"$a\"}"

或者

c)$ awk BEGIN\{print\""$a"\"\}

对于a,解释成为:

awk BEGIN{print "hello world"} #因为$a在替换后,还在“”中包括中,所以当成了一个字符串处理。

三、总结

awk怎么说也是要运行在shell环境中的。所以,写在awk中的命令,要先经过shell解析后,再交由awk来解释和执行。

原文:

awk引用外部变量

http://hi.baidu.com/liheng_2009/item/6466a4c0e087222447d5c0c8

以下两个链接给了更多的讨论:

http://www.linuxsir.org/bbs/thread121709.html

http://bbs.chinaunix.net/thread-1381166-1-1.html

 

 

=

=

=

 

分享到:
评论

相关推荐

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

    在编写Shell脚本时,我们常常需要将外部变量传递给`awk`,以便在`awk`命令中使用这些变量。本文将详细介绍如何在`awk`中获取和使用外部变量。 首先,让我们了解`awk`的基本语法: ```bash awk [ -F re ] [ ...

    awk学习awk学习awk学习awk学习

    变量赋值用于在awk脚本中使用外部变量;“文件(s)”则指定了需要处理的一个或多个文件。 #### 二、awk命令详解 1. **模式匹配**: awk支持正则表达式来匹配特定的模式。例如: ```sh awk '/root/' test ``` 这...

    awk使用手册awk使用手册

    - **外部命令调用**:可以通过 `system()` 函数调用外部命令。 #### 五、awk与C语言的比较 虽然 awk 作为一种脚本语言在某些方面不如 C 语言强大,但它的优点在于快速开发和简洁性。对于简单的文本处理任务,awk ...

    linux bash之 awk用法

    4. **外部命令执行**:通过系统调用,Awk脚本可以执行外部命令,进一步增强了其灵活性和功能。 #### 实例分析 假设我们需要处理一个日志文件,统计其中某个特定关键词的出现次数,并对每行数据进行格式化输出。...

    AWK用法详解(非常精辟)

    3. **调用外部脚本**:`awk -f scriptfile input-file`,这种方式允许更复杂的脚本组织和复用。 #### 输出保存 AWK的输出可以通过两种方式保存: - **输出重定向**:使用`>`将输出重定向到文件,但注意屏幕输出会...

    awk程序设计语言

    awk还支持与其他程序的交互,比如通过system函数调用外部程序,或者直接在awk脚本中实现shell命令。 在数据处理方面,awk提供了丰富的文本处理功能,包括数据转换与归约、数据验证、打包与拆包以及多行记录处理等。...

    AWK Quick Reference Card

    - **环境变量**:gawk版本支持通过环境变量来控制AWK的行为。 - **动态扩展**:gawk版本支持动态加载外部库,扩展功能。 - **历史特性**:gawk版本保留了一些历史特性,确保向后兼容性。 综上所述,AWK作为一种强大...

    yinyuemi--awk初学之常见问题1

    awk允许我们通过两种方式引入外部变量: - 使用`-v`选项:`awk -v var="$VAR" '{code}'`,将shell变量VAR的值赋给awk内部变量var。 - 直接在脚本中引用:`awk '{CODE}' "$VAR"{CODE}`,这种方式需要注意引号的正确...

    awk-培训.docx

    这里的`-F`用于指定输入字段的分隔符,`-f`用来调用外部awk脚本文件,`-v`则是定义变量,如`var=value`。`BEGIN`和`END`代码块分别在处理文件前和处理完所有行后执行,而`{command1; command2}`是针对每一行执行的...

    AWK简单教材.txt (全面)

    2. **脚本模式**:通过`awk -f progfile file`调用预先编写好的AWK脚本文件,适用于复杂的数据处理逻辑。 3. **内嵌模式**:脚本作为程序的一部分运行,例如`#!/bin/awk -f`开头的脚本,需设置执行权限。 #### 二、...

    awk实例入门教程.pdf

    3. **字段引用**:awk使用`$n`的形式来引用字段,其中`n`是字段的位置编号。例如,`$1`指的是第一个字段,`$3`则是第三个字段。 4. **外部脚本与BEGIN/END代码块**:BEGIN代码块在处理任何输入之前执行,常用于初始...

    awk.exe或者awk95.exe

    2. **动作**:在模式后面,你可以定义一个或多个要执行的动作,比如打印匹配的行,修改字段值,甚至调用其他外部程序。 3. **字段分割**:Awk默认使用空格或制表符将输入行分成多个字段。每个字段可以通过内置变量$...

    awk介绍.pdf

    二是通过 `-f` 选项指定包含 awk 程序的外部文件,这种方法适合处理更复杂的逻辑。三是利用命令解释器调用 awk 程序,可以将 awk 程序写入文本文件,然后通过命令行执行。 总的来说,awk 是一个高效、灵活的工具,...

    shell、awk编程教材

    SHELL中有很多特殊符号,如`$`用于引用变量,`#`用于注释,`&`表示后台执行,`|`用于管道,`>`和`用于重定向等。 **4.2 变量** SHELL中的变量分为用户自定义变量、环境变量和只读变量。 - **用户自定义变量**:...

Global site tag (gtag.js) - Google Analytics