linux脚本传一段日期做参数,一日一省linux:awk向脚本传递参数

向脚本传递参数

awk 'script' var-value inputfile

在命令行上,参数放在脚本的后面,输入文件的前面

参数每一项都作为单一参数来解析,所以等号两边不能有空格.

#以下例子为脚本scriptfile传递两个参数.

$ awk -f scriptfile high=100 low=100 datafile

#如果将awk脚本写入shell脚本,则以上脚本方法如下

$ cat awk.sh

awk -f scriptfile "high=$1" "low=$2" datafile

#$1和$2分别为执行shell脚本时的输入参数,以上脚本执行方法如下

$ sh awk.sh 100 100

环境变量的输出结果也可以作为变量值传递

awk '{...}' name=$HOSTNAME file #将主机名当做参数传给脚本

awk '{...}' dir=`pwd` file #将当前目录作为参数传给脚本

#也可以使用命令行参数定义系统变量(就不用在HEAD里定义了),下面执行结果相同,但最好用单引号括起来.当记录分隔符中要设置空格时,就必须要用单引号了.

$ awk '{print NR,$0}' OFS='.' file

$ awk '{print NR,$0}' OFS=. file

命令行参数的一个重要限制是它们在BEGIN过程中是不可用的.也就是说BEGIN执行后它们才会被读入.

#下面为命令行输入,执行顺序为:

1.执行BEGIN的操作 (由于变量n是空,则打印空行)

2.读入第一个参数 n=1

3.读入第二个参数 file1

4.对file1逐行执行脚本

5.读入第三个参数n=2

6.对file2逐行执行脚本

如果file1有10行,file2有5行,那么下面命令执行后的结果应该为:第一行为空行,然后下面10行"one",再下面是5行"two"

$ awk 'BEGIN {print n}

{

if (n==1) print "one"

if (n==2) print "two"

}' n=1 file1 n=2 file2

one

two

如果想在BEGIN之前设置输入参数,则要用-v参数

$ awk -v n=1 'BEGIN {print n}' file #

$ awk 'BEGIN {print n}' file n=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值