2

このような正規表現に変数を渡す方法は?

match($0, /([^ ]+) (GET|POST|PUT|DELETE) ([^?]+)[^ ]+ HTTP\/[^ ]+ \"(VAR)\" ([^ ]+) ([^ ]+) ([^ ]+)/, matches)
4

2 に答える 2

1

何を一致させようとしているのかはわかりませんが、次のようなものである場合:

       GETxxxHTTPxxx"VAR"xxx

私はあなたがこのように行くかもしれないと思います:

{
 var1="(VAR)"
 var="(GET|POST|PUT|DELETE)[x]+(HTTP)[x]+\"" var1 "\"[x]+"
 match($0,var,dd);
 for (x in dd){
    print x,"-->",dd[x]
    print"-"
 }
}

上記の入力を使用すると、次の出力が生成されます。

0start --> 1
-
0length --> 21
-
3start --> 15
-
1start --> 1
-
2start --> 7
-
0 --> GETxxxHTTPxxx"VAR"xxx
    -
1 --> GET
-
2 --> HTTP
-
3length --> 3
-
3 --> VAR
-
2length --> 4
-
1length --> 3
-

ここでideoneで実行中

于 2010-11-02T12:52:00.440 に答える
0

シェル変数をawkに渡したい場合は、次のように-vオプションを使用します。

awk -v VAR=${ShellVAR} '{
    //you awk program...
}' 
于 2011-05-20T06:27:26.443 に答える