3

私はubuntu11.10を実行していますが、デフォルトでmawkを使用していると思います。'script.awk'という名前のawkスクリプトがあるとすると、1つの引数を受け取ります。また、解析したいファイルの名前を指定したいと思います。したがって、「ファイル」を解析するための引数として「10」を使用する場合は、次のコマンドを実行する必要があります。

./script.awk 10 file

ただし、「10」は、引数としてではなく、解析するファイルとして解釈されます。-vフラグを使用して内部変数を設定できることはわかっていますが、ARGVを使用して、引数が渡されたかどうかを次のように確認できるようにしたいと思います。

if (ARGC < 2) { exit 1 }

回避策はありますか、それとも-vフラグを付ける必要がありますか?

4

2 に答える 2

2

awkスクリプトのBEGINブロックは、引数が使用される前に実行されます。これにより、適切な数の引数を確認して変更を加えることができます。引数が空の文字列の場合はスキップされるという特別な動作があるため、次のように実行できます。

  BEGIN {
    if (ARGC<3) exit(1);
    arg=ARGV[1]
    ARGV[1]=""
  }
于 2012-10-03T04:46:28.203 に答える
0

上記のコメントに追加(BEGINを追加した後)は、正しいawkを見つける必要があります。

awkのバージョンがあります(nawk、gawkとして)。man(またはhelp)を使用して、どのバージョンのARGCとARGVがどのAWKコマンドに該当するかを見つけてください。そのそれぞれのAWKを使用します。

nawk 'BEGIN{if(ARGC>9) print "it ll get print . as i used NAWK" }' 1 2 3 4 5 6 7 8 9

出力:

it ll get print . as i used NAWK

awk 'BEGIN{if(ARGC>9) print "It throw error . as i used AWK " }' 1 2 3 4 5 6 7 8 9

出力:

awk: can't open 1

于 2015-06-13T07:47:06.757 に答える