在编写awk脚本时如何排列输入文件名和附加参数?

时间:2017-08-19 21:22:37

标签: awk

我想写一个awk脚本,这样 我可以直接在bash中运行脚本名称,而无需将awk作为命令名称。

如何安排输入文件名和其他参数在命令行指定并传递到脚本?

脚本应该说myscript.awk以shebang开头:

#! /usr/bin/awk -f                                                                                                                                                                 

#! /usr/bin/awk  
还是没有shebang?

我如何编写脚本来处理命令行参数,以便我可以像myscript.awk inputfile arg1 arg2myscript.awk arg1 arg2 inputfile那样运行它?

我应该如何处理awk的选项,例如-F'\t'

或者有哪些替代方法可以做到这一点?

或者我应该通过在我的awk程序上编写一个调用awk的bash脚本来间接地做这件事吗?

由于

1 个答案:

答案 0 :(得分:2)

我更喜欢使用bash来完成大部分工作,然后使用所有参数调用awk。这样你就可以完全访问bash内置函数和其他内容。

您可以这样做:

#!/bin/bash

var1=$1
var2=$2
separator=$3

awk -F "$separator" -v myvar1="$var1" -v myvar2="$var2" '
    BEGIN {
        print myvar1, myvar2
    }
'

如果参数包含空格(如许多文件名),则双引号很好。