回憶起一件事情:之前用linux尋找中文輸入法的時候,在百度輸入了fcitx,然后結果上邊有個,您要找的是不是: 諷刺騰訊 。本來一直記不住這個輸入法名字,不過以后哥就記住這個輸入法的名字是怎么拼了,感謝百度。
第九章awk的驚人表現
awk的調用可以定義變量、提供程序并且指定輸入文件,語法:
代碼如下:
awk [ -F fs ] [ -v var=value ... ] 'program' [ -- ] [ var=value ... ] [file(s) ]
awk [ -F fs ] [ -v var=value ... ] -f programfile [ -- ] [ var=value ... ] [ file(s) ]
短程序通常直接在命令行上提供,而比較長的程序則委托-f選項指定,可以重復使用此選項。如果命令行未指定文件名,則awk會從標準輸入讀取。 -- 是特殊選項,指出awk本身已經沒有更進一步的命令行選項。任何接下來的選項都可被你的程序使用。
-F選項是用來重新定義默認字段分隔字符,且一般慣例將它作為第一個命令選項。緊接-F選項后的fs參數是一個正則表達式或是被提供作為下一個參數。字段分隔字符也可以設置使用內建變量FS所指定。如:
awk -F '/t' '{ ... }' files FS="[/f/v]" files
上邊例子-F選項設置的值,應用到第一個文件組,而由FS指定的值,則應用到第二個組。初始化的-v選項必須放在命令行上直接給定的任何程序之前,他們會在程序啟動前生效。在一命令行程序之后-v選項會被解釋為一個文件名。在命令行上其他地方的初始化會在處理參數時完成,并且會帶上文件名,如:
awk '{...}' Pass=1 *.tex Pass=2 *.tex
處理文件的列表兩次,第一次Pass設為1,第二次為2。使用字符串值進行初始化無須用引號框起來,除非shell要求這樣的引用以保護特殊字符或空白。
特殊文件名-(連字符)表示標準輸入。大部分現代的awk實現(不包括POSIX)都認定特殊名稱/dev/stdin為標準輸入,即使主機操作系統不支持該文件名。同樣:/dev/stderr與/dev/stdout可用于awk程序內,分別表示標準錯誤輸出與標準輸出。
一般awk命令模式或操作可省略一個,如果模式省略,則每條輸入都被操作;如果操作省略,則默認操作為輸出匹配模式的記錄。雖然模式多半是數字或字符串表達式,不過awk以保留自BEGIN與END提供兩種特殊模式。
與BEGIN關聯的操作只會執行一次,在任何命令行文件或一般命令行賦值被處理之前,但是在任何開頭的-v選項指定已完成之后。它大部分是用來處理程序所需要的任何特殊初始化工作。END操作也是只執行一次。用于所有輸出數據已被處理完之后。BEGIN和END模式可以是任意順序,可以存在awk程序內任何位置。當指定多個BEGIN或END模式,則他們將按照在awk程序里的順序執行。
awk提供了標量與數組兩種變量以保存數據、數字與字符串表達式,還提供了一些語句類型以處理數據:賦值、注釋、條件、函數、輸入、循環及輸出。awk表達式許多功能與c語言相似。awk里注釋是從#開始到行尾??缧姓Z句需要在結尾處加上反斜杠。
新聞熱點
疑難解答