awk引用外部变量

简介: 一、用awk 有以下几种方法去调用变量: 1.  awk '{print a, b}' a=111 b=222 yourfile 注意, 变量位置要在 file 名之前, 否则就不能调用。

一、用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

注意, 对每一个变量加一个 –v 作传递.

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

目录
相关文章
|
存储 块存储
Ceph Reef(18.2.X)集群的OSD管理基础及OSD节点扩缩容
这篇文章是关于Ceph Reef(18.2.X)集群的OSD管理基础及OSD节点扩缩容的详细教程,涵盖了OSD的基础操作、节点缩容的步骤和实战案例以及OSD节点扩容的基本流程和实战案例。
585 6
|
存储 SQL 机器学习/深度学习
阿里云数加大数据计算服务MaxCompute学习路线图:从入门到精通
将所学知识应用于实际工作中并不断进行实践和创新是提升技术能力的关键所在。用户可以结合业务需求和技术发展趋势积极探索新的应用场景和解决方案,并在实践中不断总结经验和教训以提升自己的技术水平和实践能力。
|
缓存 网络协议 Java
java线程池单例
java线程池单例
507 0
|
机器学习/深度学习 分布式计算 大数据
MaxCompute产品使用合集之怎么在生产环境中执行
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
100 0
|
Shell Linux C语言
【Shell 命令集合 文档编辑】Linux 格式化输出 col命令使用指南
【Shell 命令集合 文档编辑】Linux 格式化输出 col命令使用指南
168 0
成功解决AttributeError: ‘PathCollection‘ object has no property ‘n_levels‘
成功解决AttributeError: ‘PathCollection‘ object has no property ‘n_levels‘
|
机器学习/深度学习 PyTorch 算法框架/工具
SE 注意力模块 原理分析与代码实现
本文介绍SE注意力模块,它是在SENet中提出的,SENet是ImageNet 2017的冠军模型;SE模块常常被用于CV模型中,能较有效提取模型精度,所以给大家介绍一下它的原理,设计思路,代码实现,如何应用在模型中。
3915 0
HTML去除横向滚动条
HTML去除横向滚动条
74 0
|
数据可视化 Serverless
scRNA分析|使用AddModuleScore 和 AUcell进行基因集打分,可视化
scRNA分析|使用AddModuleScore 和 AUcell进行基因集打分,可视化
1875 0
|
数据可视化 Go
GOplot | 更美观的富集分析可视化
GOplot | 更美观的富集分析可视化
775 0
GOplot | 更美观的富集分析可视化