首页 > 其他分享 >将外部参数传入awk命令的方法汇总

将外部参数传入awk命令的方法汇总

时间:2023-03-05 21:59:19浏览次数:34  
标签:BEGIN 传入 汇总 var awk print 方法

将外部参数传递进入awk命令

将shell脚本里的参数传递进入awk命令里的方法:从文件中读取,从管道传递,从shell变量中读取等,每种方法的适用不同。

把数据传入awk的方法汇总

方法1:文件

将file文件里的数据传入awk命令

awk '{print $0}' file 

当有多个文件时,可以在后面加入多个文件名

awk 'FILENAME==ARGV[1]{print $0}FILENAME==ARGV[2]{print $0}' file1 file2 

方法2:管道

通过管道将前面的数据传入awk命令

cat file | awk '{print $0}'
echo $var | awk '{print $0}'

该方法的缺点是管道命令只有一个出口,一个入口,因此只能将一组数据传入awk

方法3:变量

可以通过-v选项将外部变量var传给内部变量a,也可以在BEGIN里将外部变量var赋值给内部变量a

var=1
awk -v a="$var" 'BEGIN{print a}'
awk 'BEGIN{a='"$var"'; print a}'

当变量有多个时,可以使用多次-v选项,或者在BEGIN里多次赋值

var1=1
var2=2
awk -v a="$var1" -v b="$var2" 'BEGIN{print a,b}'
awk 'BEGIN{a='"$var1"'; b='"$var2"'; print a,b}'

方法4:以上方法的混合

管道方法和文件方法不能同时使用,其他方法均可同时使用。所以,awk可以同时输入外部变量并读取外部文件,也可以同时接收管道数据并传入外部变量。
例如计算弧长对应的距离

pi=3.14159265
radius=6371.05
awk -v r="$radius" 'BEGIN{pi='"$pi"'}{print pi*r*$1}' file | cat

参数传递的区别

使用-v和BEGIN传入参数的区别

如果传入的字符串包含数字,就有区别,一个例子可以说明

a=1/2
awk 'BEGIN{ss='"$a"'; split(ss,str,"/"); print str[1]}'  #输出0.5,因为把a视为表达式
awk -v ss="$a" 'BEGIN{split(ss,str,"/"); print str[1]}'  #输出1,因为把a视为字符串

标签:BEGIN,传入,汇总,var,awk,print,方法
From: https://www.cnblogs.com/liangxuran/p/17181786.html

相关文章

  • Linux awk命令详解
    awk命令作用:文本处理输出格式化的文本报表执行算数运算执行字符串操作运行系统命令等等AWK的程序结构:BEGIN语句块BEGIN语句块的语法BEGIN{awk-commands}BEGIN语句块在程序......
  • markdown语法汇总
    markdown语法汇总[TOC]1.标题['#'+空格前置]1.#一级标题2.##二级标题3.###三级标题4.####四级标题2.强调[用'**'把文本包围]或者[用'__'把文本包围]’**你......
  • 软件测试之Docker常见问题汇总!附解决方法!
    1、配置国内源进行docker安装,报错HTTPError404-NotFound原因:由于配置国内镜像源时,把地址写错了,导致后面安装docker提示HTTPError404解决方法:1)进入到/etc/yum......
  • kubeadm init命令初始化kubernetees集群时如何传入自定义镜像,解决初始化无法pull到国
    众所周知,我们使用kubeadminit初始化一个新的集群的时候,经常因为国外镜像无法pull到而失败,我们可以通过初始化时给命令加上--config=config.yaml参数,给命令传入额外参数,里......
  • 常用Linux shell命令汇总,总有一条你需要
    对于经常使用linux系统的博主来说,基本常用的shell命令是少不了的,总结一下,哪天不会了,可以来翻看下O(∩_∩)O。对你有用记得收藏哦!欢迎补充!1.检查远程端口是否对bash开放:......
  • 前端常用英语汇总
    HTML(只统计常用标签)|<!DOCTYPE>|声明必须位于HTML5文档中的第一行,也就是位于<html>标签之前。该标签告知浏览器文档所使用的HTML规范 |<html>  |表示......
  • SQL注入探测语句汇总
    首先是我学习到的一些好用的探测语句:假设场景是post参数里传递了一个参数:&id=1&,这种情况就可以使用下面十分好用的探测语句:方法一:CASEWHEN...THEN...ELSE...END的使用......
  • Linux内核面试题汇总
    [暂无答案]1.硬件中断号和Linux内核的IRQ号它们是如何映射的?2.当发生硬件中断之后,ARM64处理器架构做哪些工作?3.为什么说中断上下文不能执行睡眠操作?4.一个硬件中断后,Linux......
  • 移动端测试用例设计汇总
    作为移动互联网产品『最后一公里的守护者』,我们必须要清楚的知道自己该做什么、怎么做。但从版本迭代速度、需求量级、测试人员不断变动等方面综合来看,我们很多人都没......
  • 蓝牙调试工具集合汇总
     BLE该部分主要分享一下常用的蓝牙调试工具,方便后续蓝牙抓包及分析。1hciconfig工具介绍:​​hciconfig​​,​​HCI​​设备配置工具命令格式:​​hciconfig​​、​​hcic......