这里提到awk,相信写shell的朋友都会接触到。AWK 是一种用于处理文本的编程语言工具。AWK 提供了极其强大的功能:
- 可以进行正则表达式的匹配
- 样式装入
- 流控制
- 数学运算符
- 进程控制语句
- 内置的变量和函数
可以把awk看作一门完全的程序设计语言,它处理文本的速度是快得惊人的。现在很多基于shell 日志分析工具都可以用它完成。设计简单,速度表现很好。 涉及到以上六个方面内容,我会在以后文章中加以介绍。 这次主要说下,怎么样把外部变量传入到awk执行语句中。
一、基础:
awk [ -F re] [parameter...] ['pattern {action}' ] [-f progfile][in_file...]
awk一般语法如上面所说。
如:
[chengmo@localhost ~]$ echo 'awk code' | awk 'BEGIN{print "start\n============="}{print $0}END{print "=========\nend"}'
start
=============
awk code
=========
end
在 awk中两个特别的表达式,BEGIN和END,这两者都可用于pattern中(参考前面的awk语法),提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。任何在BEGIN之后列出的操作(在{}内)将在awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。
二、获得外部变量方法
1、获得普通外部变量
[chengmo@localhost ~]$ test='awk code'
[chengmo@localhost ~]$ echo | awk '{print test}' test="$test"
awk code
[chengmo@localhost ~]$ echo | awk test="$test" '{print test}'
awk: cmd. line:1: fatal: cannot open file `{print test}' for reading (No such file or directory)
格式如:awk ‘{action}’ 变量名=变量值 ,这样传入变量,可以在action中获得值。 注意:变量名与值放到’{action}’后面。
[chengmo@localhost ~]$ echo | awk 'BEGIN{print test}' test="$test"
这种变量在:BEGIN的action不能获得。
2.BEGIN程序块中变量
[chengmo@localhost ~]$ test='awk code'
[chengmo@localhost ~]$ echo | awk -v test="$test" 'BEGIN{print test}'
awk code
[chengmo@localhost ~]$ echo | awk -v test="$test" '{print test}'
awk code
格式如:awk –v 变量名=变量值 [–v 变量2=值2 …] 'BEGIN{action}’ 注意:用-v 传入变量可以在3中类型的action 中都可以获得到,但顺序在 action前面。
3.获得环境变量
[chengmo@localhost ~]$ awk 'BEGIN{for (i in ENVIRON) {print i"="ENVIRON[i];}}'
AWKPATH=.:/usr/share/awk
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
SELINUX_LEVEL_REQUESTED=
SELINUX_ROLE_REQUESTED=
LANG=en_US.UTF-8
.......
只需要调用:awk内置变量 ENVIRON,就可以直接获得环境变量。它是一个字典数组。环境变量名 就是它的键值。
分享到:
相关推荐
SHELL编程是Unix/Linux操作系统环境...总的来说,SHELL和AWK都是Unix/Linux环境中非常实用的工具,它们结合使用可以实现高效的数据处理和任务自动化。通过学习和掌握这两门技术,用户可以更好地管理和优化自己的系统。
在Linux环境中,shell脚本是一种强大的工具,可以与操作系统进行交互并执行各种任务。当我们需要查询Oracle数据库中的数据并返回结果时,可以结合shell脚本和Oracle的SQL命令行工具来实现。这篇博客(虽然链接不可用...
在实践中,学会使用内置命令和外部工具,如grep、find、sed、awk等,能大大增强Shell脚本的功能。例如,grep用于搜索文本,find用于查找文件,sed用于流编辑,awk则擅长处理结构化数据。 最后,编写健壮的脚本需要...
《Unix与Linux Shell编程指南》是一本专注于操作系统交互和自动化任务执行的实用手册。Shell编程在Linux和Unix环境中扮演着核心角色,它提供了一种高效的方式来进行系统管理、任务自动化以及用户界面定制。以下是...
### Linux Awk 学习知识点详解 #### 一、Awk 简介与基本用法 Awk 是一种在 Unix 和类 Unix 操作系统上广泛使用的文本处理工具,能够帮助用户快速处理文本数据,执行复杂的文本分析任务。Awk 的主要功能包括模式...
【Linux Awk 完全手册范本】 Awk 是一种强大的文本分析工具,它的名称来源于其三位创始人:Aho、Peter Weinberg 和 Brian Kernighan。awk 被设计为样式扫描和处理语言,它提供了丰富的功能,可以完成类似于 grep 和...
Linux Shell是Linux操作系统中的一种命令解释器,它允许用户通过命令行界面与系统进行交互,执行各种操作。本文将深入探讨Linux Shell命令行及其脚本编程的实例详解,旨在帮助读者掌握这一强大的工具。 首先,我们...
- 脚本中可以调用许多内置命令和外部工具,如`grep`、`sed`、`awk`等,增强处理能力。 - `.bashrc`和`.bash_profile`:配置个人Shell环境的启动脚本。 通过系统学习和实践这些知识点,你将能够熟练编写Shell脚本,...
2. **变量与参数**:在shell脚本中,可以定义变量存储数据,同时,脚本可以通过位置参数或命名参数接收外部输入。例如,当用户通过命令行与系统交互时,这些参数会被传递到相应的脚本中处理。 3. **条件语句和循环*...
在这个案例中,开发者可能利用了shell的循环、条件判断、输入/输出重定向等特性,以及可能涉及到的一些外部工具,如awk、sed、grep等,来实现游戏逻辑、用户交互和输出渲染。 首先,让我们来理解这个游戏的基本原理...
Linux Shell脚本编程是Linux操作系统中的重要组成部分,它是一种解释型的编程语言,主要用于自动化系统管理任务和控制程序流程。Shell脚本可以帮助用户通过命令行界面执行一系列操作,提高工作效率,减少手动输入...
awk 是一种程序语言. 它具有一般程序语言常见的... 此外, awk内建有pipe的功能, 可将处理中的数据传送给外部的 Shell命令加以处理, 再将Shell命令处理后的数据传回awk程序, 这个特点也使得awk程序很容易使用系统资源.
Linux基础与Shell编程是IT领域的核心技能之一,尤其对于系统管理员和开发者来说至关重要。下面将详细阐述这些主题,包括Linux的基础知识、Shell编程的概念、LINUX与UNIX Shell编程指南中的要点,以及通过提供的...
在Linux系统中,Shell脚本是一种强大的自动化工具,它允许用户通过编写一系列命令来执行复杂的任务。Shell脚本不仅能够简化日常操作,还能提高效率,是Linux系统管理、自动化运维和开发人员不可或缺的技能之一。 ##...
《Linux命令——AWK用法详解》 AWK,一种在Unix/Linux系统中广泛使用的文本处理工具,源自三位杰出的计算机科学家Aho、Weinberg和Kernighan之名。与sed和grep类似,AWK也是一种样式扫描与处理工具,但它在功能上...
【Linux Awk 完全手册】深入解析 Awk 是一种强大的文本分析工具,由 Aho、Weinberg 和 Kernighan 三位开发者命名,它不仅具备样式扫描和处理的能力,还能执行复杂的文本处理任务,甚至包含内置的变量和函数,形成了...