当前位置: 首页 > news >正文

awk那些事儿:在awk中使用shell变量的两种方式

awk是Linux中一款非常好用的程序,可以逐行处理文件,并提供了强大的语法和函数,和grepsed一起被称为“Linux三剑客”。

在使用awk处理文件时,有时会用到shell中定义的变量,由于在shell中变量的调用方式是通过$符号进行的,而在awk$符号有特殊的含义,它可以表示待处理文件的某一列,也可以表示所有列(即$0),因此不能在awk中通过$符号调用shell变量。

下面来介绍两种在awk中调用shell变量的方式。

方式1:通过双引号加单引号的方式

语法规则:在变量两边加入双引号和单引号,即 "'$var'" 的形式

示例命令如下:

var1="shell"
var2="python"awk 'BEGIN {print "'$var1'"; print "'$var2'"}'# 输出结果
# shell
# python

这里用到了awkBEGIN语句(即BEGIN { }),它是awk程序在没有读取任何数据之前最先执行的语句。

此外这种调用shell变量的方式也可以用在awk后面接文件输入时,如下所示:

echo -e "hello\nhi" > a.txtvar1="shell"
var2="python"awk '{print $0", ""'$var1'"" and ""'$var2'"}' a.txt # 这里$0表示文件a.txt的整行
# $0和后面 "'$var1'" 之间的 ", " 是字符串连接方式,它允许将多个变量连接成一个字符串# 输出结果
# hello, shell and python
# hi, shell and python

不难发现,这种调用方式会在awk命令中引入很多的双引号和单引号,当命令较多时就会产生混淆,可读性非常差,容易出现问题。下面介绍一种可读性更好的调用shell变量的方式。

方式2:通过-v参数将shell变量转为awk变量

awk非常强大,它允许用户自定义变量,如下面的代码:

awk 'BEGIN {var="hello"; print var}'# 输出结果
# hello

上述命令变量var进行了赋值,然后打印了变量var的值。

此外awk提供了一个-v参数,可以来对awk中的变量进行赋值,示例代码如下:

awk -v var="hello" 'BEGIN {print var}'# 输出结果
# hello

在上述命令中,通过-v参数在awk中给变量var赋值为了”hello”字符串,然后就可以在awk中直接调用var变量,最终打印结果为”hello”。

因此可以结合-v参数来将shell变量赋值为awk变量,然后在awk中就可以直接使用shell变量的值了,示例代码如下:

var1="shell"
var2="python"awk -v a="$var1" -v b="$var2" 'BEGIN{print "a is "a, "\nb is "b}'# 输出结果
# a is shell 
# b is python

需要注意的是,-v参数必须在BEGIN语句的前面才能发挥作用!

上述用法也可以用在awk处理文件时,如下:

awk -v a="$var1" -v b="$var2" '{print "a is "a, "\nb is "b}' a.txt

总结

本文介绍了两种在awk中使用shell变量的方式:

方式1:awk 'BEGIN {print "'$var1'"; print "'$var2'"}'

方式2:awk -v a="$var1" -v b="$var2" 'BEGIN{print a; print b}'

本文参考链接:

  • https://www.gnu.org/software/gawk/manual/gawk.html
  • https://fedingo.com/how-to-use-shell-variables-in-awk-script/

相关文章:

awk那些事儿:在awk中使用shell变量的两种方式

awk是Linux中一款非常好用的程序,可以逐行处理文件,并提供了强大的语法和函数,和grep、sed一起被称为“Linux三剑客”。 在使用awk处理文件时,有时会用到shell中定义的变量,由于在shell中变量的调用方式是通过$符号进…...

大数据面试题--kafka夺命连环问(后10问)

目录 16、kafka是如何做到高效读写? 17、Kafka集群中数据的存储是按照什么方式存储的? 18、kafka中是如何快速定位到一个offset的。 19、简述kafka中的数据清理策略。 20、消费者组和分区数之间的关系是怎样的? 21、kafka如何知道哪个消…...

智能量化交易的多样化策略与风险控制:中阳模型的应用与发展

随着金融市场的不断创新与发展,智能量化交易正逐渐成为金融投资的重要手段。中阳智能量化交易模型通过技术优势、策略优化与实时风险控制等多方面结合,为投资者提供了强有力的工具支持。本文将对中阳量化模型的技术细节、多策略组合与市场适应性进行深入…...

小皮PHP连接数据库提示could not find driver

最近遇到一个奇怪的问题,我的小皮上安装的8.0.2版本的php连接数据库正常。下载使用8.2.9时,没有php.ini,把php-development.ini改成 php.ini后,就提示could not find driver。 网上查了说把php.ini里的这几个配置打开,我也打开了&…...

2024.11.13(一维数组相关)

思维导图 1> 提示并输入一个字符串,统计该字符串中大写字母、小写字母、数字字符、空格字符的个数并输出 2> 提示并输入一个字符串,将该字符串中的所有字母挑选到一个新数组中,将所有的数字字符挑选到另一个新数组中。并且将数字字符对…...

豆包MarsCode算法题:数组元素之和最小化

数组元素之和最小化 问题描述思路分析分析思路解决方案 参考代码(Python)代码分析1. solution 函数2. 计算 1 2 3 ... n 的和3. 乘以 k 得到最终的数组元素之和4. 主程序(if __name__ __main__:)代码的时间复杂度分析&#x…...

Hbase Shell

一、启动运行HBase 首先登陆SSH,由于之前在Hadoop的安装和使用中已经设置了无密码登录,因此这里不需要密码。然后,切换至/usr/local/hadoop,启动Hadoop,让HDFS进入运行状态,从而可以为HBase存储数据&#…...

激活函数解析:神经网络背后的“驱动力”

神经网络中的激活函数(Activation Function)是其运作的核心组件之一,它们决定了神经元如何根据输入信号进行“激活”,进而影响整个模型的表现。理解激活函数的工作原理对于设计和优化神经网络至关重要。本篇博客将深入浅出地介绍各…...

【开源免费】基于SpringBoot+Vue.JS水果购物网站(JAVA毕业设计)

博主说明:本文项目编号 T 065 ,文末自助获取源码 \color{red}{T065,文末自助获取源码} T065,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…...

推荐一款多物理场模拟仿真软件:STAR-CCM+

Siemens STAR-CCM是一款功能强大的计算流体力学(CFD)软件,由西门子公司推出。它集成了现代软件工程技术、先进的连续介质力学数值技术和卓越的设计,为工程师提供了一个全面的多物理场仿真平台。主要特点与优势:多物理场仿真、自动化与高效、高…...

React Hooks在现代前端开发中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 引言 React Hooks …...

重学SpringBoot3-整合Quartz定时任务

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ Quartz 是一个开源的任务调度框架,用于在应用程序中创建、管理和调度定时任务。将 Quartz 和 Spring Boot 3 结合,可以轻松实现定时任务的灵活管理…...

STM32单片机WIFI语音识别智能衣柜除湿消毒照明

实践制作DIY- GC0196-WIFI语音识别智能衣柜 一、功能说明: 基于STM32单片机设计-WIFI语音识别智能衣柜 二、功能介绍: STM32F103C系列最小系统板LCD1602显示器ULN2003控制的步进电机(柜门开关)5V加热片直流风扇紫外消毒灯DHT11…...

spring中entity的作用

在Spring框架中,特别是结合Spring Data JPA(Java Persistence API)时,Entity类用于表示数据库中的表。这些类通常用于ORM(对象关系映射),即将对象模型与关系型数据库中的表进行映射。以下是Enti…...

2019年下半年试题二:论软件系统架构评估及其应用

论文库链接:系统架构设计师论文 论文题目 对于软件系统,尤其是大规模复杂软件系统而言,软件系统架构对于确保最终系统的质量具有十分重要的意义。在系统架构设计结束后,为保证架构设计的合理性、完整性和针对性,保证系…...

网络自动化04:python实现ACL匹配信息(主机与主机信息)

目录 背景分析代码代码解读代码总体结构1. load_pattern_from_excel 函数2. match_and_append_pattern 函数3. main 函数总结 最终的效果: 今天不分享netmiko,今天分享一个用python提升工作效率的小案例:acl梳理时的信息匹配。 背景 最近同事…...

字典树介绍以及C++实现

字典树的概念 字典树(Trie),又称为前缀树或单词查找树,是一种树形数据结构,主要用于存储具有相同前缀的字符串集合。它特别适合用于词典中的单词查找、自动补全、拼写检查等应用。 字典树算法的核心思想就是每层存入…...

【C++】用红黑树封装set和map

在C标准库中,set容器和map容器的底层都是红黑树,它们的各种接口都是基于红黑树来实现的,我们在这篇文章中已经模拟实现了红黑树 ->【C】红黑树,接下来我们在此红黑树的基础上来看看如何封装set和map。 一、共用一颗红黑树 我…...

【大数据测试HDFS + Flask详细教程与实例】

大数据测试HDFS Flask 1. 环境准备安装工具安装Hadoop(以单机模式为例)安装Flask和HDFS Python客户端 2. HDFS Flask基本架构基本文件结构 3. 创建Flask应用与与HDFS交互步骤1:配置HDFS连接步骤2:构建Flask应用 4. 创建前端界面…...

高级java每日一道面试题-2024年10月31日-RabbitMQ篇-RabbitMQ中vhost的作用是什么?

如果有遗漏,评论区告诉我进行补充 面试官: RabbitMQ中vhost的作用是什么? 我回答: 在Java高级面试中,关于RabbitMQ中vhost(虚拟主机)的作用是一个重要且常见的考点。以下是对vhost的详细解释: 一、vhost的基本概念 vhost&am…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

centos 7 部署awstats 网站访问检测

一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

2023赣州旅游投资集团

单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...