如何在 awk 中存储变量?

Awk 存储变量

Awk 是一种强大的文本处理工具,广泛应用于数据处理和分析,本文将详细介绍如何在 Awk 中定义和使用变量,包括数值表达式和赋值运算符的使用方法,通过这些知识,你将能够更高效地处理文本数据。

awk 存储变量

一、Awk 变量

在各种编程语言里,变量充当存储特定值的容器,一旦你在程序文件中声明了一个变量,程序执行时,就会在内存中分配一块空间来保存你为这个变量指定的值,定义 Awk 变量的方法与定义 shell 变量的方法相同,具体如下:

variable_name=value

在上述语法规则中:

variable_name:指的是你为变量指定的名称。

value:指的是变量存储的具体数值。

让我们看一些具体的例子:

computer_name="tecmint.com"
port_no="22"
email="admin@tecmint.com"
server="computer_name"

观察上述的简单实例,在首次定义变量时,将值tecmint.com 分配给了变量computer_name,同样,数字22 被赋予了变量port_no,还可以把一个变量的值赋给另一个变量,就像最后一个例子中,将变量computer_name 的值赋给了变量server

awk 存储变量

如果你还记得,在本系列的第二部分,讨论了字段编辑,当时讨论了 Awk 如何将输入行分割成不同的字段,并使用标准的字段访问操作符 $ 来读取这些已解析的字段,也可以使用变量来保存字段的值,具体方法如下。

first_name=$2
second_name=$3

在上述例子中,变量first_name 被赋予了第二字段的值,而second_name 则被赋予了第三字段的值,假设有一个名为 names.txt 的文件,该文件列出了一个应用程序的用户的名单,包括他们的名、姓和性别,可以使用 cat 命令来查看这个文件的内容,操作如下:

$ cat names.txt

可以使用变量first_namesecond_name 来分别保存名单上第一位用户的名和姓氏,具体可以通过执行下面的 Awk 命令来实现:

$ awk '/Aaron/{ first_name=$2 ; second_name=$3 ; print first_name, second_name ; }' names.txt

再来看一个例子,当你在你的终端中输入命令 uname -a 时,它会显示出你的系统的全部信息,在输出的第二字段中包含了你的主机名,因此可以将这个主机名存储到一个名为 hostname 的变量里,然后通过 Awk 命令如下打印出来:

$ uname -a | awk '{hostname=$2 ; print hostname ; }'

二、数值表达式

在 Awk 语言中,可以通过使用一系列的数值运算符来构建数值表达式,这些运算符包括:

: 乘法

awk 存储变量

+: 加法

/: 除法

: 减法

%: 取余(模)

^: 乘方(指数)

数值表达式的构成格式为:

operand1 operator operand2

在上述表达式中,operand1operand2 可以是数值或者变量的名称,而operator 则可以是前文提到的任一运算符,下面是一些示例,展示了如何构建数值表达式:

counter=0
num1=5
num2=10
num3=num2-num1
counter=counter+1

要理解在 Awk 中数值表达式的运用,来看下面的例子,这个例子中用到了一个名为 domains.txt 的文件,这个文件列出了 Tecmint 所持有的所有域名。

news.tecmint.com
tecmint.com
linuxsay.com
windows.tecmint.com
tecmint.com
news.tecmint.com
tecmint.com
linuxsay.com
tecmint.com
news.tecmint.com
tecmint.com
linuxsay.com
windows.tecmint.com
tecmint.com

要查看文件的内容,请使用以下命令:

$ cat domains.txt

如果想计算域 howtoing.com 在文件中出现的次数,可以编写一个简单的脚本来执行此操作,如下所示:

#!/bin/bash
for file in $@; do
        if [ -f $file ] ; then
                #print out filename
                echo "File is: $file"
                #print a number incrementally for every line containing tecmint.com 
                awk '/^tecmint.com/ { counter=counter+1 ; printf "%s
", counter ; }' $file
        else
                #print error info incase input is not a file
                echo "$file is not a file, please specify a file." >&2 && exit 1
        fi
done
#terminate script with exit code 0 in case of successful execution 
exit 0

创建脚本后,保存它并使其可执行,当使用文件 domains.txt 作为输出运行它时,得到以下输出:

$ ./script.sh ~/domains.txt

从脚本的输出来看,domains.txt 文件中有 6 行包含 howtoing.com,以确认您可以手动计算它们。

三、赋值运算符

将探讨 Awk 的最后一个特性——赋值运算符,在 Awk 中,有多种赋值运算符,具体包括:

*= : 表示乘法后赋值

+= : 表示加法后赋值

/= : 表示除法后赋值

-= : 表示减法后赋值

%= : 表示取余(模)后赋值

^= : 表示乘方(指数)后赋值

在 Awk 中进行赋值操作的基本语法如下:

variable_name=variable_name operator operand

示例:

counter=0
counter=counter+1
num=20
num=num-1

您可以使用上面的赋值运算符来缩短 Awk 中的赋值操作,考虑前面的示例,可以按以下形式执行赋值:

variable_name operator=operand
counter+=1

四、相关问题与解答栏目

Q1: 如何在 Awk 中使用变量?

A1: 在 Awk 中定义和使用变量的方法与 shell 类似,你可以用等号 (=) 将值赋给变量,并在需要时引用这些变量。computer_name="tecmint.com",你还可以将变量用于保存字段的值,如first_name=$2

Q2: 如何在 Awk 中构建数值表达式?

A2: 在 Awk 中,数值表达式使用一系列运算符构建,如加法 (+)、减法 ()、乘法 () 等,你可以写counter=counter+1 来增加计数器的值,这些表达式可以包含数值或变量名称。

Q3: Awk 支持哪些赋值运算符?

A3: Awk 支持多种赋值运算符,包括*=(乘法后赋值)、+=(加法后赋值)、/=(除法后赋值)、-=(减法后赋值)、%=(取余后赋值)和^=(乘方后赋值),这些运算符允许你在一条语句中进行计算并赋值。

以上就是关于“awk 存储变量”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/651964.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-11-17 17:33
Next 2024-11-17 17:35

相关推荐

  • 如何在Linux中使用awk执行命令?

    使用awk执行Linux命令一、概述AWK是一种功能强大的文本处理工具,通常用于在Unix/Linux环境下对文本和数据进行处理,它能够逐行读取文件内容,默认以空格或制表符作为字段分隔符,将每行分割成多个字段,然后根据用户指定的模式或条件进行处理,AWK不仅支持文本的基本处理,还允许调用外部的Shell命令来增……

    2024-11-17
    02
  • Shell变量知识有哪些

    Shell变量知识是Linux系统中非常重要的知识点,掌握好Shell变量的知识,可以大大提高我们在Linux系统中的工作效率,本文将从Shell变量的定义、分类、设置方法、使用技巧等方面进行详细的介绍。一、Shell变量定义Shell变量是用来存储数据的命名字符串,它们可以包含文本、数字和命令等,在Shell中,变量名以字母、数字和……

    2023-11-18
    0111
  • 变量引用_变量引用

    变量引用是编程语言中的一种操作,用于获取或修改变量的值。通过变量引用,我们可以在程序中方便地使用和操作数据。

    2024-06-08
    081
  • sql中怎么使用declare声明变量

    在SQL中,我们可以使用DECLARE语句来声明变量,这些变量可以用于存储数据,然后在查询中使用,声明变量的主要目的是为了提高查询的灵活性和可读性,在本文中,我们将详细介绍如何在SQL中使用DECLARE声明变量。1、基本语法在SQL中,声明变量的基本语法如下:DECLARE @变量名 数据类型;@符号表示变量是局部变量,只在当前会话……

    2023-12-26
    0146
  • c语言中变量的命名规则是什么意思

    C语言中变量的命名规则在C语言编程中,对变量的命名并不是随意的,它遵循一定的规则和约定,这些规则确保了代码的可读性和一致性,下面我们将详细探讨C语言中变量命名的规则。基本命名规则1、变量名可以由字母(A-Z, a-z)、数字(0-9)和下划线(_)组成。2、变量名必须以字母或下划线开头,不能以数字开头。3、变量名不能包含除字母、数字和……

    2024-02-11
    0231
  • volatile变量规则

    在多线程编程中,volatile关键字是一个非常有用的工具,它可以确保多个线程之间共享的数据保持一致性,理解和正确使用volatile变量并非易事,本文将详细介绍如何分析volatile变量以及如何在实际编程中应用它们。我们需要了解volatile变量的基本概念,volatile是一种特殊的数据类型,它告诉编译器不要对这个变量进行优化……

    2023-11-20
    0136

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入