awkに2つの数字を追加する機能

awkに2つの数字を追加する機能

add.awk関数を含むawkファイルがありますadd(num1,num2)。コマンドラインから入力を受けたいです。

#!/bin/awk -f
function add(num1,num2)
{
    print $num1 + $num2
}
BEGIN {
    add($1,$2)
}

ただし、次のようにadd.awkファイルを実行しようとすると:

./add.awk 5,6

常に値0を印刷します。

入力の指定方法に問題がありますか?

ベストアンサー1

いろんな問題があると思います。

まず、私が知っている限り、ブロック内ではコマンドラインパラメータを使用できません$1。ただし、少なくともGNU awkでは配列を介してアクセスできます(カンマで区切るのではなくスペースで区切る必要があります)。$2BEGINARGV

第二に、内部変数の逆参照構文ではnum1ありません$num1

だからあなたはできます

#!/usr/bin/awk -f
function add(num1,num2)
{
    print num1 + num2
}
BEGIN {
    add(ARGV[1],ARGV[2])
}

それから電話してください

$ ./add.awk 5 6
11

本当に使用するには、内部的に配列に分割する./add.awk 5,6必要があります。ARGV[1]

#!/usr/bin/awk -f
function add(num1,num2)
{
    print num1 + num2
}
BEGIN {
    split(ARGV[1],a,",");
    add(a[1],a[2])
}

$ ./add.awk 5,6
11

おすすめ記事