linux入门之awk和shell变量传递

2023-11-06

一、awk使用shell中的普通变量
方法1:使用引号法
aa="hello"
awk 'BEGIN {print "$aa"}'
输出$aa
awk 'BEGIN {print "'$aa'"}'
输出hello
awk 'BEGIN {print ""$aa""}'
输出空


aa="hello! coder"
awk 'BEGIN {print "'$aa'"}'
报错,双引号没配对,因为中间出现空格
awk 'BEGIN {print "'"$aa"'"}'
能正常显示hello! coder


方法2:使用-v法
awk -v varaa="$aa" 'BEGIN {print varaa}'
awk -v varaa=$aa 'BEGIN {print varaa}'
能正常显示,-v还是比较方便的,比较清晰


方法3:通过环境变量
aa="this is a test";export aa
awk 'BEGIN{print ENVIRON["aa"]}'
正常
注意设置环境变量的时候是export aa而不是export $aa


方法4:使用awk 'script' awkvar="shellvar" filename
aa="this is a test";export aa
awk 'END{print bb}' bb="$aa" a.txt
当把END改为BEGIN的时候就不能使用了


二、awk中使用shell的数组变量
aa=(a b c d e)
awk -v bb="$aa" 'BEGIN{print bb}'
只能输出a,估计是数组aa的第一个成员
aa=(a b c d e)
awk -v bb="$aa" 'BEGIN{for(i in bb) print bb[i]}'
报错
提示bb不是一个数组


aa=(a b c d e)
awk -v bb="${aa[*]}" 'BEGIN{split(bb,A," ");for(i in A) print i"---"A[i]}'


三、shell中使用awk中的数组
注意:shell中的数组是非关联数组,下标只能是数字,而awk中的数组是关联数组,下标可以是字符串
awk 在BEGIN中定义的变量名称居然不能叫index


eval $(awk 'BEGIN {xiabiao=0} {aa[$1]=$2} END{for(i in aa) {print "aa["xiabiao"]="aa[i];xiabiao+=1}}' a.txt)
echo ${#aa[@]}
echo ${aa[@]}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux入门之awk和shell变量传递 的相关文章

  • 在 VBA 中捕获 shell 命令的输出值?

    发现这个功能http www cpearson com excel ShellAndWait aspx http www cpearson com excel ShellAndWait aspx 但我还需要捕获 shell 的输出 有什么代
  • tcpdump 是否受 iptables 过滤影响?

    如果我的开发机器有iptables规则到FORWARD一些数据包 这些数据包是否被 tcpdump 捕获 我有这个问题 因为我知道存在其他链称为INPUT如果数据包路由到 它会过滤发往应用程序的数据包FORWARD链 它会到达吗tcpdum
  • 如何在linux中以编程方式获取dir的大小?

    我想通过 C 程序获取 linux 中特定目录的确切大小 我尝试使用 statfs path struct statfs 但它没有给出确切的大小 我也尝试过 stat 但它返回任何目录的大小为 4096 请建议我如何获取 dir 的确切大小
  • 如何阻止ubuntu在使用apt安装或更新软件包时弹出“Daemons using outdatedlibraries”? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我最近新安装了 Ubuntu 22 04 LTS 我发现每次使用 apt 安装或更新软件包时 它都会询问我有关Which servic
  • C 语言的符号表

    我目前正在开发一种执行模式匹配的静态分析工具 我在用Flex https github com westes flex生成词法分析器 我编写了代码来管理符号表 我不太有经验C 所以我决定将符号表实现为线性链表 include
  • 如何用awk删除以“C”开头的行?

    如何使用以下命令从文本文件中删除以 C 开头的行awk 有什么建议请 如果数据在文件中data txt then With awk awk C data txt With grep grep v C data txt 显示开头不带 C 的所
  • 使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS

    我无法使用以下汇编代码产生 总线错误 这里我使用的内存地址不是合法的 规范地址 那么 我怎样才能触发该错误呢 我在带有 NASM 2 14 02 的 Ubuntu 20 04 LTS 下运行这段代码 但它会导致负载出现 SIGSEGV 分段
  • 使用 MAX_ORDER / 包含 mmzone.h

    根据https www kernel org doc Documentation networking packet mmap txt https www kernel org doc Documentation networking pa
  • 在 Mono 上运行 .Net MVC5 应用程序

    我正在 Windows 上的 Visual Studio 2013 中开发 Net 4 5 1 MVC5 应用程序 现在我想知道 是否可以在Linux Ubuntu 12 04 上运行这个应用程序 可以使用OWIN吗 Owin 可以自托管运
  • 从 Xlib 转换为 xcb

    我目前正在将我的一个应用程序从 Xlib 移植到 libxcb 但在查找有关我有时使用的 XInput2 扩展的信息时遇到了一些麻烦 libxcb 中有 XInput2 实现吗 如果是的话 在哪里可以找到文档 目前我在使用此功能时遇到问题
  • SVN 提交后挂钩在提交后不会运行

    我的服务器上设置了 SVN 存储库 并且遇到提交后问题 我在 iMac 上使用 SmartSVN 作为客户端 我通过 SmartSVN 的 ssh svn 连接 我能够成功连接到 SVN 并对其进行更改 但从 SVN 客户端提交后 我的提交
  • 配置tomat的server.xml文件并自动生成mod_jk.conf

    我在用apache 2 2 15 and tomcat6 6 0 24 on CentOS 6 4并希望使用 tomcat 服务器的功能 通过添加以下内容自动生成 mod jk conf 文件
  • 在 AIX 中使用 Mailx 通过电子邮件发送 SQLPlus 查询结果的 Shell 脚本

    我有我需要的命令 如果我在提示符下执行这些命令 一切都会按预期进行 SQLPlus 运行查询 将结果导出到文件 然后 Mailx 将该文件通过电子邮件发送给我 sqlplus username pwd instance SPOOL home
  • 如何在 Linux 中使用 C 语言使用共享内存

    我的一个项目有点问题 我一直在试图找到一个有据可查的使用共享内存的例子fork 但没有成功 基本上情况是 当用户启动程序时 我需要在共享内存中存储两个值 当前路径这是一个char and a 文件名这也是char 根据命令参数 启动一个新进
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • 绕过 dev/urandom|random 进行测试

    我想编写一个功能测试用例 用已知的随机数值来测试程序 我已经在单元测试期间用模拟对其进行了测试 但我也希望用于功能测试 当然不是全部 最简单的方法是什么 dev urandom仅覆盖一个进程 有没有办法做类似的事情chroot对于单个文件并
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • 如何让 Node.js 作为后台进程运行并且永不死掉?

    我通过 putty SSH 连接到 linux 服务器 我尝试将其作为后台进程运行 如下所示 node server js 然而 2 5 小时后 终端变得不活动 进程终止 即使终端断开连接 我是否也可以使进程保持活动状态 Edit 1 事实
  • 如何使用 UNIX shell 脚本删除平面文件的页眉和页脚记录?

    我有一个平面文件 如下所示 如何使用 UNIX shell 脚本从文件中删除页眉和页脚并重写同一文件 9 20050427 HEADER RECORD 0000000 00000 000000000 123456 00 654321 DAT
  • ansible unarchive 模块如何查找 tar 二进制文件?

    我正在尝试执行一个 ansible 剧本 该剧本的任务是利用unarchive模块 因为我是在 OSX 上执行此操作 所以我需要使用它gnu tar 而不是bsd tar通常与 OSX 一起提供 因为BSD tar 不受官方支持 https

随机推荐

  • 有效延缓痴呆症:延世大学发现梯度提升机模型能准确预测 BPSD 亚综合征

    内容一览 随着人口老龄化程度不断加剧 痴呆症已经成为公共健康问题 目前医学界治疗该病还只能通过药物缓解 尚未发现治愈的有效方法 因此 预防痴呆症尤为紧迫 在这一背景下 延世大学的研究人员开发了多个预测 BPSD 的机器学习模型 并对这些模型
  • IMX6ULL NXP官方原版u-boot编译烧录体验以及出现的问题

    编译 guangjie ubuntu work imx6ull uboot imx rel imx 4 1 15 2 1 0 ga xgj cat make imx6ull emmc sh bin bash make ARCH arm CR
  • iPhone/iPad通过iSH使用adb免越狱网络连接安卓【phonesploit使用】【adb使用】【渗透工具】

    最后一次更新 2023 1 26 请勿利用文章内的相关技术从事非法测试 由于传播 利用此文所提供的信息而造成的任何直接或者间接的后果及损失 均由使用者本人负责 作者不为此承担任何责任 目录 1 前言 2 iSH 已安装且对iSH有所了解的用
  • 尺取法解决区间问题

    尺取法 尺取法通常是对数组保存一对下标 即所选取的区间的左右端点 然后根据实际情况不断地推进区间左右端点以得出答案 尺取法比直接暴力枚举区间效率高很多 尤其是数据量大的时候 所以说尺取法是一种高效的枚举区间的方法 题目 给定一个数组和一个数
  • Docker CE 镜像源站 CentOS 7 (使用yum进行安装)

    step 1 安装必要的一些系统工具 sudo yum install y yum utils device mapper persistent data lvm2 Step 2 添加软件源信息 sudo yum config manage
  • KMP算法之基础思想篇

    KMP算法是快速求字符串P 是不是字符串S的子串的一个算法 具体案例呢 可以看力扣的28题 实现 strStr 题意也很简单 就是找出P在S中出现的第一个位置 实际上就是找子串 这种最简单的方法就是暴力 直接两层for循环 O n m 的复
  • 前端实现元素拖拽的组件react-draggable

    参考官网https www npmjs com package react draggable
  • jquery绑定点击事件,随着点击次数的增加,发送的网络请求也累加,该如何避免此种情况?

    今天在用jQuery写项目的时候发现 当我点击部门与地方并来回切换的时候 发送的网络请求也是逐步累加 这样的情况很影响性能 很难通过压力测试 之所以会出现这样的原因是绑定的点击事件不是每点击一次就替换上一次的数据 他是逐步累积的 解决这个方
  • 蜻蜓刷脸支付就算是双胞胎也能轻松辨别

    随着科技的发展 我们进入了一个全新的时代 各类新鲜的行业也涌现 为了跟上人们生活所需 各个行业都要各自完善 更新更适合人们的产品 才能在这个信息的时代存活 我们告别了现金的时代 迎来了移动支付 这使得我们的生活更加的便捷 同样的节省了我们的
  • adb的安装和配置

    下载工具 解压后 进行环境配置 SDK 平台工具版本说明 Android 开发者 Android Developers 将adb exe所在路径 新建到Path中 adb version 可查看adb版本信息即可
  • NumPy 函数手册

    NumPy手册 文章目录 NumPy手册 获取属性 秩 形状 大小 元素数据类型 元素占用空间大小 内存地址 创建数组 创建空数组 创建零数组 创建1数组 创建对角矩阵 创建序列数组 创建概率分布的数组 已有列表 元组创建 切片 索引 切片
  • upload_libs通关教程

    Pass 01 js检查 只能上传jpg png gif js验证 上传php文件被拦截 删除js验证 上传成功 Pass 02 MIME Type验证 文件有MIME Type验证 可以用burpsuit抓包 修改Content Type
  • 【PostgreSQL 数据库技术峰会(成都站)】云原生虚拟数仓 PieCloudDB Database 的架构和关键模块实现...

    2023年6月17日 中国开源软件推进联盟 PostgreSQL 分会在成都举办了数据库技术峰会 此次峰会以 新机遇 新态势 新发展 为主题 结合当下信创热潮 人工智能等产业变革背景 探讨 PostgreSQL 数据库在这些新机遇下的发展前
  • 浏览器播放rtsp视频流:1、开源方案

    浏览器播放rtsp视频流 1 开源方案 文章目录 浏览器播放rtsp视频流 1 开源方案 1 方案一 html5 websocket rtsp proxy 实现视频流直播 1 1 实现原理 1 2 实现步骤 1 3 优缺点 1 4 参考链接
  • LeetCode # 452 投飞镖刺破气球

    在二维空间中有许多球形的气球 对于每个气球 提供的输入是水平方向上 气球直径的开始和结束坐标 由于它是水平的 所以y坐标并不重要 因此只要知道开始和结束的x坐标就足够了 开始坐标总是小于结束坐标 平面内最多存在104个气球 一支弓箭可以沿着
  • 鸿蒙pc系统镜像,鸿蒙系统有pc版么_鸿蒙系统有pc版安装方法

    鸿蒙系统作为华为推出的一款操作系统 它跟其他安卓ios系统还是有很大区别的接 但是华为除了有手机还有电视使用鸿蒙系统之外电脑也是华为手机不可缺少的一款 那鸿蒙系统pc版怎么下载呢 1 鸿蒙系统pc版安装方法 首先在电脑上插入U盘 然后打开制
  • 钉钉内网测试-超简单

    环境 win10 python3 钉钉内网穿透官网 两步实现内网穿透 一 下载穿透工具 穿透工具 11 8M 然后启动 进入命令行 cd windows 64 ding config ding cfg subdomain abcde 808
  • expdp数据泵导出oracle某表带时间查询的写法

    expdp scott tiger orcl directory dump dir dumpfile expdp dmp tables emp query where tjsj to date 2020 03 yyyy mm
  • yolop源码train.py学习

    因为要做一个可行驶区域和车道线的任务 所以选了yolop 看他的刷榜还可以 yolop的算法解读后边找了链接再贴出来 花花花大神的博客 我们先从 tools train py 开始debug train py 结构 import xxx d
  • linux入门之awk和shell变量传递

    一 awk使用shell中的普通变量 方法1 使用引号法 aa hello awk BEGIN print aa 输出 aa awk BEGIN print aa 输出hello awk BEGIN print aa 输出空 aa hell