next up previous contents
Next: 輸入輸出處理print(f) Up: 其他函數 Previous: 其他函數   Contents

字串處理-match與代換

字串上處理不像sed有s///這種代換,得用上一些內建函數。 代換: 代換的幾個函數有的傳回值很特別 string2沒給通通是$0,nth_match可以用g或G表示globally(全部)。請看例子

    $ cat match.awk
    #! /bin/awk
    BEGIN{FS=":"}
    /cyril/{
    print $0
    print match($0, /cyril/)
    print substr($0, match($0, /cyril/), length("cyril"))
    print gensub(/cyril/, "mark", 2)
    print $0
    sub(/^.*cyril/, "mark")
    print $0
    }

    $ awk -f match.awk /etc/passwd
    lcyril:x:100:1::/export/lcyril:/usr/bin/bash
    2
    cyril
    lcyril:x:100:1::/export/lmark:/usr/bin/bash
    lcyril:x:100:1::/export/lcyril:/usr/bin/bash
    mark:/usr/bin/bash
這個例子用了length()這個函數,regex不用引號,有string的地方要用 double quote括起來,用gensub不會改變string2的值, 而且請看第三個print $0,這邊還是有greedy的效應在,所以只剩下後面一截。



Cyril Huang 2002-06-14