国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
AWK使用

 

1 awk的調(diào)用可以定義變量,提供程序并且指定輸入文件。

2   Awk [ -F fs ][ -v var=value …] ‘program’ [ --- ]\

    [ var=value …] [ file(s) ]

Awk [ -F fs ] [ -vvar=value …] –f programfile [ --- ]\

    [ var=value …] [ file(s) ]

    A. 短程序直接在命令行上提供,長的程序以-f項指定。

B--是特殊選項,指出awk本身已沒有進一步的命令選項,任何接下來的選項都被你的程序使用。

    C -F 用來重新定義默認字段的分隔字符。分隔字符也可以使用內(nèi)建變量FS指定。

        awk –F ‘\t’‘{…}’ files FS=”[\f\v]” files

D. –v選項必須放在命令行上直接給定的任何程序之前,它們會在程序啟動之前以及處理文件之前生效。

3 awk程序模型。

    A awk把輸入流看作一連串的記錄的集合,一行一條記錄,每條記錄再分為字段。

B.一個awk程序是一對以模式與大括號框起來的操作組合而成的。模式與操作可省略其中一個,如模式省略,則操作將被應(yīng)用到每條輸入記錄。如果操作省略,則默認操作是打印匹配記錄到標準輸出上。

Pattern { action }

Pattern

        { action }

CBEGINEND BEGIN模式對應(yīng)的操作只在-v選項完成后執(zhí)行一次,通常BEGIN放到各種操作之前,END模式對應(yīng)的操作在所有數(shù)據(jù)已被處理完成后執(zhí)行,只執(zhí)行一次,END通常放到最后。

4 程序元素

    1)兩個連續(xù)的字符串會自動連接到一起。

    2)將數(shù)字轉(zhuǎn)換為字符串,通過數(shù)字連接空字符串便可:n=123, s = “” n

    3awk 功能強大的地方來自于它對正則表達式的支持。~ 匹配,!~ 不匹配。

        ABC ~ ^[A-Z]+$” 結(jié)果為真。

4)正則表達式常量可以用引號或斜杠來定界。注意轉(zhuǎn)義:\\\\Tex/\Tex/都匹配包含\Tex的字字符串表達式。

    5)字符串轉(zhuǎn)換成數(shù)字。加個零到字符串就可,s = “123”n = 0 + s

        “+123ABC”轉(zhuǎn)成123,“ABC124”轉(zhuǎn)成0. “ABC” 轉(zhuǎn)成0.“”轉(zhuǎn)成0.

    (6)

5 內(nèi)建變量

       FILENAME當前的輸入文件名

       FNR當前的輸入文件記錄數(shù)。

       FS字段分隔字符

       NF當前記錄的字段數(shù)

       NR在工作中的記錄數(shù)

       OFS輸出字段分隔字符

       ORS輸出記錄分隔字符

       RS輸入記錄分隔字符(僅用gawk,mawk

 

6 字段

字段可以以特殊名稱$0, $1, $2, … $NFawk程序使用。$0引用當前的記錄。記錄分隔符不是記錄的一部分。

 

7 awk里的單行程序。

 

(1)      awk '{ C += length($0) + 1 ;W+= NF} {print NR, W, C }' 統(tǒng)計記錄數(shù)輸入的行數(shù)與總工的字節(jié)數(shù)。

(2)      awk '{print $2, log($2) }'test2.txt 打印第2欄的值與其對數(shù)值。

(3)      awk -v COLUMN=2 ' { sum +=$COLUMN } {print sum} ' test2.txt報告第2欄的值,注意欄就是列的意思。

(4)      awk '/main/ { print FILENAME":" FNR ":" $0}' * AWK查找字符。然后打印出文件名所在和行與當前記錄,也就是當前行內(nèi)容。

(5)      awk 'BEGIN { FS ="#"; OFS = "&" } { $2 = $2 ;print }' test3.txt >test4.txt

開始時指定#為記錄中的字段分隔符,指定&為輸出記錄的字段分隔符。

8 語句

       1)連續(xù)執(zhí)行。

              多條語句寫在一行上用分號隔開,或是一個語句一行。

       2)條件執(zhí)行。

              if(expressino)

                     Statement

              else

                     Sssss

             

       (3)重復執(zhí)行。

              A,while(express)

            statement

        B, do

                statemetnt

            while(expresss)

        C, for(exp1;exp2; exp3)

                statement

        D, for(key in arrary)

                statement

            用來反復處理數(shù)組里的元素。

        可以使用break,continue.

9 數(shù)組成員。

    引用元素時如果元素不存在則會建一個元素。測試是應(yīng)這樣寫if( “sally” in telArry)而非if( telArry[“sally”]!= “”);

 

10 用戶控制輸入

    getline

11 執(zhí)行外部程序

    有三種方式

(1)      getline語句通過管道外部程序通信。使用完管道后要用close()關(guān)閉。

(2)      輸出重定向與外部程序通訊。使用完文件后要用close()關(guān)閉。

(3)      system(command)。這個在system返回前會自動關(guān)閉所用的文件或管道。

12 用戶定義函數(shù)。

1)函數(shù)可以定義在程序頂層的任何位置:成對的模式/操作之前,之間,之后。慣例是放在后面。

2)調(diào)用時函數(shù)名與括號之間不能有空格。

3)標量為傳值,數(shù)組為傳引用,函數(shù)里可以更改數(shù)組中的值。

4)函數(shù)返回值不是零就是空字符串。

5)所有用在函數(shù)體內(nèi)而在參數(shù)中沒有出現(xiàn)的變量都認為是全局的。調(diào)用時傳入的參數(shù)可以比定義的少,多余的參數(shù)視為局部變量。

13 字符串函數(shù)

(1)      子字符串提取

substr(string,start, len )   返回一個由stringstart字符開始,共len個字符長度的子字符串副本。字符位置從1開始編號, 參數(shù)超出范圍得到一個空串。

(2)      字符串長度

length( string )

(3)      字母大小寫轉(zhuǎn)換

tolower(string),toupper( string )

tolower(“aBcDeF123”), 返回”abcdef123”

(4)      字符串查找。

index( string,find ), string里查找find 然后返回stringfind字符串的起始位置,如果找不到就返回0,注意字符位置從1開始。

                     index(tolower(string), tolower(find))可以在查找時忽略大小寫。

index只會找出第一個出現(xiàn)的字符串,要找最后一個的話沒有標準的函數(shù),下面這段程序可以完成這個功能。

              functionrindex( string, find,     k,  ns, nf )

       {

                     ns= length(string)

                     nf= length(find)

                     for(k = ns + 1-nf; k>=1; k--)

                            if(substr(string, k, nf) == find)

                     return k

       return 0

}

      

(5)      字符串匹配

match(string,regexp)string與正則表達式regexp匹配,如果匹配就返回匹配string的索引,不匹配就返回0.

       6字符串替換

               sub( regexp, replacement, target)

               gsub(regexp, replacement, target)

       7字符串分割。

              Aawk 對當前記錄$0自動進行了分割,$1, $2,$3 $NF.

B 可以用函數(shù)來做上面的分割。split( string, array,regexp ) regexpstring切割為片段,并存在array里,如果將第三個參數(shù)省略則用FS當成分隔符。數(shù)組從1開始。

A split( $0,parts, “:”)以冒號分隔。

B split(string,chars, “”)分隔符沒有空格,就是把string分隔成單字節(jié)存放在chars數(shù)組中。

C split(“”,array ) 刪除array里的所有元素。

       8字符串重建

              awk沒有提供標準的重建函數(shù),但可以通過下面的程序?qū)崿F(xiàn)。

function join(array, n, fs,    k, s )

{

#重新組合arrary元素為一字符串

#fs為分隔

       if( n >= 1 )

       {

              s = array[1]

for( k = 2; k<=n; k++)

       s= s fs array[k]

}

return (s)

}

14 數(shù)值函數(shù)

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
awk經(jīng)典,有這一篇就夠了
【awk】awk語法(小結(jié))
linux命令終極系列(awk
Linux Shell三劍客之a(chǎn)wk,功能強大的文本處理工具
為什么你應(yīng)該學點Awk(附指南及示范) By yuanyi
windws下面使用gawk的方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服