如何在shell脚本里传递一个变量给awk

本文介绍了如何在Shell脚本中使用awk处理文件,并讨论了如何将变量传递给awk以及如何使用这些变量作为正则表达式的匹配条件。

http://www.jquerycn.cn/a_6857

awk有时是个纠结的东西,一方面它很容易就占用了单引号和双引号,如果你要在什么脚本里面调用awk,很轻松地就要跟引号的转义进行搏斗;
另一方面,$1 $2 ... $NF $NR,它也毫不客气的占用了$族的地盘。

怎么在shell脚本里面传递一个变量给awk呢?

特别是想要把这个变量用作匹配的正则表达式的时候?

先说简单的,如果是只传递变量,有几种方法:  

复制代码 代码如下:
awk '{print v1, v2}' v1=$VAR1 v2=$VAR2 input_file

# 或者,这种方法不是所有的awk分支都支持  

复制代码 代码如下:
awk -v v1=$VAR1 -v v2=$VAR2 '{print v1, v2}' input_file

# 或者,这种写法是最难受的  

复制代码 代码如下:
awk '{print "'"$VAR1"'", "'"$VAR2"'"}' input_file

把变量用在正则里面的方法:  

复制代码 代码如下:
awk ' $0 ~ v1; {print v2}' v1=$VAR1 v2=$VAR2 input_file

在linux系统管理中,sed与awk是两个很强的东西,好好挖掘下吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值