Linux|如何允许 awk 使用 Shell 变量

引言

当我们编写 shell 脚本时,我们通常会在脚本中包含其他较小的程序或命令,例如 awk 操作。就 Awk 而言,我们必须找到将一些值从 shell 传递到 Awk 操作的方法。

这可以通过在 Awk 命令中使用 shell 变量来完成,在本文中,我们将学习如何允许 Awk 使用 shell 变量,这些变量可能包含我们想要传递给 Awk 命令的值。

可能有两种方法可以让 Awk 使用 shell 变量:

1. 使用 Shell 引用

让我们看一个示例来说明如何实际使用 shell 引用来替换 Awk 命令中 shell 变量的值。在这个例子中,我们要在文件/etc/passwd中搜索用户名,过滤并打印用户的帐户信息。

因此,我们可以编写一个test.sh脚本,内容如下:

#!/bin/bash

#read user input
read -p "Please enter username:" username

#search for username in /etc/passwd file and print details on the screen
cat /etc/passwd | awk "/$username/ "' { print $0 }'

此后,保存文件并退出。上面test.sh脚本中awk命令的解释:

cat /etc/passwd | awk "/$username/ "' { print $0 }'

"/$username/ " – shell 引用用于替换 Awk 命令中 shell 变量 username 的值。 username 的值是要在文件 /etc/passwd 中搜索的模式。请注意,双引号位于 Awk 脚本“{ print $0 }”之外。

然后使脚本可执行并运行它,如下所示:

chmod  +x  test.sh
./text.sh 

运行脚本后,系统将提示您输入用户名,输入有效的用户名并按 Enter 键。您将从 /etc/passwd 文件中查看用户的帐户详细信息,如下所示:

alt

2. 使用awk的变量赋值

与上面的方法一相比,这种方法更简单、更好。考虑上面的例子,我们可以运行一个简单的命令来完成这项工作。在此方法下,我们使用 -v 选项将 shell 变量分配给 Awk 变量。

首先,创建一个 shell 变量 username 并为其指定我们要在 /etc/passswd 文件中搜索的名称:

username="aaronkilik"

然后输入以下命令并按 Enter 键:

cat /etc/passwd | awk -v name="$username" ' $0 ~ name {print $0}'
alt

上述命令的解释:

  • -v – 用于声明变量的 awk 选项
  • username – 是 shell 变量
  • name – 是 Awk 变量

让我们仔细看看 Awk 脚本中的 0 ~ name {print 0}'。通过管道传输到 Awk 的 cat 命令的输出( 0)与我们在 /etc/passwd 中搜索的名称模式 (aaronkilik) 匹配,因此,比较操作为 true。然后,包含用户帐户信息的行将打印在屏幕上。

总结

我们已经介绍了 Awk 功能的一个重要部分,它可以帮助我们在 Awk 命令中使用 shell 变量。很多时候,您会在 shell 脚本中编写小型 Awk 程序或命令,因此,您需要清楚地了解如何在 Awk 命令中使用 shell 变量。

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/703306.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Digimat在电池壳体SMC复合材料成型工艺中的应用

SMC工艺介绍及挑战 SMC(Sheet Molding Compound的缩写,即片状模塑料)是一种复合材料制造工艺。该工艺可以有效地代替金属,实现车辆轻量化目标。该工艺不仅能够显著降低车身重量,而且设计灵活,操作简单、易…

企业数字化转型规划设计(107页PPT)

一、资料介绍 《企业数字化转型规划设计》这份详尽的107页PPT资料,是对企业数字化转型的全方位、系统性规划设计的深度解读。该资料从数字化转型的必要性、现状分析、目标设定、实施路径、技术支持到风险评估等多个维度,为企业提供了一套完整且实用的操…

软信天成:业务流程管理驱动企业数字化转型

近日,在国家发展改革委办公厅、国家数据局综合司联合印发的《数字经济2024年工作要点》中,明确强调了本年度大力推进重点领域数字化转型,营造数字化转型生态的战略举措,标志着国家对于企业数字化转型的高度重视与积极倡导。 企业…

防静电托盘的用途和性能

防静电托盘主要的用途就是将静电消除,比较广泛的使用在电子的器件以及其在生产的过程中,需要进行转载的周转、运输、贮存和包装等,在行业中我们还可以称之为导静电的托盘,正常情况下防静电托盘的高度为100mm以下,比较适…

python将两张图片对齐

目录 需要对齐的照片如下: 源码: 结果: 需要对齐的照片如下: 源码: import cv2 import numpy as np from matplotlib import pyplot as plt# 读取两张图片 imgA cv2.imread(./out/out/3.png) imgB cv2.imread(./…

使用Flask-SocketIO构建实时Web应用

文章目录 准备工作编写代码编写HTML模板运行应用 随着互联网的发展,实时性成为了许多Web应用的重要需求之一。传统的HTTP协议虽然可以实现实时通信,但是其长轮询等机制效率低下,无法满足高并发、低延迟的需求。为了解决这一问题,诞…

ES 数据写入方式:直连 VS Flink 集成系统

ES 作为一个分布式搜索引擎,从扩展能力和搜索特性上而言无出其右,然而它有自身的弱势存在,其作为近实时存储系统,由于其分片和复制的设计原理,也使其在数据延迟和一致性方面都是无法和 OLTP(Online Transac…

高效稳定,AH1515-15V转12V8A稳压芯片成为各种设备首选

高效稳定,AH1515 15V转12V稳压芯片成为各种设备首选 随着科技的不断发展,各种电子设备对电源的要求越来越高,尤其是电压稳定性和电流输出能力。为了解决这一问题,我国一款名为AH1515的稳压芯片应运而生,凭借其优异的性…

FBX Python SDK 入门教程

安装 1. 下载 FBX Python SDK 官网地址,根据你的操作系统,下载相应的 FBX SDK 2020.3.4 Python exe 文件。 2. 安装 执行下载的文件 fbx202034_fbxpythonsdk_win.exe,安装完的程序路径我的是 D:\Program Files\Autodesk\FBX\FBX Python SDK\…

Django创建网站的地基

相关文档 1、为新网站创建一个文件夹(这里是:locallibrary) D:\django>mkdir locallibraryD:\django>cd locallibraryD:\django\locallibrary>dirVolume in drive D is 新加卷Volume Serial Number is B68C-03F7Directory of D:\dj…