国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Ubuntu Pattern正則表達式匹配所指定

系統 Linux
這程序包含二個Ubuntu Pattern { Actions }指令. { for( i=2; i <= NF; i++) Number[$i]++ } END{for(course in Number) printf("%10s %d"n", course, Number[course] )} 第一個Ubuntu Pattern { Actions }指令中省略了Ubuntu Pattern 部分. 故隨著每筆數據行的讀入其Actions部分將逐次無條件被執行.

Ubuntu Pattern已被廣泛應用但是也在不斷的更新,這里介紹Ubuntu Pattern安裝設置使用,幫助大家安裝更新Ubuntu Pattern系統。選擇符合指定條件的記錄 Ubuntu Pattern { Action }為awk中最主要的語法. 若某Ubuntu Pattern之值為真則執行它后方的 Action. awk中常使用"關系表達式" (Relational Expression)來當成 Ubuntu Pattern.

awk 中除了>, <, ==, != ,...等關系運算符( Relational Operators )外,另外提供 ~(match),!~(Not Match) 二個關系運算符. 利用這兩個運算符, 可判斷某字符串是否包含能匹配所指定正則表達式的子字符串. 由于這些特性, 很容易使用awk來編寫需要字符串比對, 判斷的程序. 組裝部門員工調薪5%,(組裝部門員工之ID以"A"開頭) 所有員工***之薪資率若仍低于100, 則以100計. 編寫awk程序打印新的員工薪資率報表.

[分析 ] : 這個程序須先判斷所讀入的數據行是否合于指定條件, 再進行某些動作.awk中 Ubuntu Pattern { Actions } 的語法已涵蓋這種 " if ( 條件) { 動作} "的架構. 編寫如下之程序, 并取名 adjust1.awk $1 ~ /^A.*/ { $3 *= 1.05 } $3<100 { $3 = 100 } { printf("%s %8s %d"n", $1, $2, $3)} 執行下列命令 : $awk -f adjust1.awk emp.dat

結果如下 : 屏幕出現 :

  1. A125    Jenny 105   
  2. A341      Dan 115   
  3. P158      Max 130   
  4. P148     John 125   
  5. A123    Linda 100  

說 明 : awk的工作程序是: 從數據文件中每次讀入一個數據行, 依序執行完程序中所有的 Ubuntu Pattern{ Action }指令:

  1. $1~/^A.*/ { $3 *= 1.05 }   
  2. $3 < 100 { $3 = 100 }   
  3. {printf("%s %8s %d"n",$1,$2,$3)}  

再從數據文件中讀進下一筆記錄繼續進行處理. ***個 Ubuntu Pattern { Action }是: $1 ~ /^A.*/ { $3 *= 1.05 } $1 ~ /^A.*/ 是一個Ubuntu Pattern, 用來判斷該筆數據行的***欄是否包含以"A"開頭的子字符串. 其中 /^A.*/ 是一個Regular Expression, 用以表示任何以"A"開頭的字符串. (有關 Regular Expression 之用法 參考 附錄 E ).

Actions 部分為 $3 *= 1.05 $3 *= 1.05 與 $3 = $3 * 1.05 意義相同. 運算子"*=" 之用法則與 C 語言中一樣. 此后與 C 語言中用法相同的運算子或語法將不予贅述. 第二個 Ubuntu Pattern { Actions } 是: $3 <100 {$3 = 100 } 若第三欄的數據內容(表薪資率)小于100, 則調整為100. 第三個 Ubuntu Pattern { Actions } 是: {printf("%s %8s %d"n",$1, $2, $3 )} 省略了Ubuntu Pattern(無條件執行Actions), 故所有數據行調整后的數據都將被印出.

awk 中數組

awk程序中允許使用字符串當做數組的下標(index). 利用這個特色十分有助于資料統計工作.(使用字符串當下標的數組稱為Associative Array) 首先建立一個數據文件, 并取名為 reg.dat. 此為一學生注冊的資料文件; ***欄為學生姓名, 其后為該生所修課程.

  1. Mary O.S. Arch. Discrete   
  2. Steve D.S. Algorithm Arch.   
  3. Wang Discrete Graphics O.S.   
  4. Lisa Graphics A.I.   
  5. Lily Discrete Algorithm 

awk中數組的特性 使用字符串當數組的下標(index). 使用數組前不須宣告數組名及其大小. 例如: 希望用數組來記錄 reg.dat 中各門課程的修課人數. 這情況,有二項信息必須儲存:
(a) 課程名稱, 如: "O.S.","Arch.".. ,共有哪些課程事先并不明確.
(b)各課程的修課人數. 如: 有幾個人修"O.S."

在awk中只要用一個數組就可同時記錄上列信息. 其方法如下: 使用一個數組 Number[ ] : 以課程名稱當 Number[ ] 的下標. 以 Number[ ] 中不同下標所對映的元素代表修課人數.

例如: 有2個學生修 "O.S.", 則以 Number["O.S."] = 2 表之. 若修"O.S."的人數增加一人,則 Number["O.S."] = Number["O.S."] + 1 或 Number["O.S."]++ . 如何取出數組中儲存的信息 以 C 語言為例, 聲明 int Arr[100]; 之后, 若想得知 Arr[ ]中所儲存的數據, 只須用一個循環, 如 : for(i=0; i<100; i++) printf("%d"n", Arr[i]);

即可. 上式中: 數組 Arr[ ] 的下標 : 0, 1, 2,..., 99 數組 Arr[ ] 中各下標所對應的值 : Arr[0], Arr[1],...Arr[99] 但 awk 中使用數組并不須事先宣告. 以剛才使用的 Number[ ] 而言, 程序執行前, 并不知將來有哪些課程名稱可能被當成 Number[ ] 的下標.

awk 提供了一個指令, 藉由該指令awk會自動找尋數組中使用過的所有下標. 以 Number[ ] 為例, awk將會找到 "O.S.", "Arch.",... 使用該指令時, 須指定所要找尋的數組, 及一個變量. awk會使用該的變量來記錄從數組中找到的每一個下標. 例如

for(course in Number){....} 指定用 course 來記錄 awk 從Number[ ] 中所找到的下標. awk每找到一個下標時, 就用course記錄該下標之值且執行{....}中之指令. 藉由這個方式便可取出數組中儲存的信息.

[ 范例 : ] 統計各科修課人數,并印出結果. 建立如下程序,并取名為 course.awk: { for( i=2; i <= NF; i++) Number[$i]++ } END{for(course in Number) printf("%10s %d"n", course, Number[course] )}

執行下列命令 : $awk -f course.awk reg.dat
執行結果如下 :

  1. Graphics 2   
  2. O.S. 2   
  3. Discrete 3   
  4. A.I. 1   
  5. D.S. 1   
  6. Arch. 2   
  7. Algorithm 2  

這程序包含二個Ubuntu Pattern { Actions }指令. { for( i=2; i <= NF; i++) Number[$i]++ } END{for(course in Number) printf("%10s %d"n", course, Number[course] )} ***個Ubuntu Pattern { Actions }指令中省略了Ubuntu Pattern 部分. 故隨著每筆數據行的讀入其Actions部分將逐次無條件被執行.

以awk讀入***筆資料 " Mary O.S. Arch. Discrete" 為例, 因為該筆數據 NF = 4(有4個字段), 故該 Action 的for Loop中i = 2,3,4. i $i 最初 Number[$i] Number[$i]++ 之后 i=2時 $i="O.S." Number["O.S."]的值從默認的0,變成了1 ;i=3時 $i="Arch." Number["Arch."]的值從默認的0,變成了1 ;同理,i=4時 $i="Discrete" Number["Discrete"]的值從默認的0,變成了1 ;

第二個 Ubuntu Pattern { Actions }指令中END 為awk之保留字, 為 Ubuntu Pattern 的一種. END 成立(其值為true)的條件是: "awk處理完所有數據, 即將離開程序時. "平常讀入數據行時, END并不成立, 故其后的Actions 并不被執行; 唯有當awk讀完所有數據時, 該Actions才會被執行 ( 注意, 不管數據行有多少筆, END僅在***才成立, 故該Actions僅被執行一次.)

BEGIN 與 END 有點類似, 是awk中另一個保留的Ubuntu Pattern. 唯一不同的是: "以 BEGIN 為 Ubuntu Pattern 的 Actions 于程序一開始執行時, 被執行一次." NF 為awk的內建變量, 用以表示awk正處理的數據行中, 所包含的字段個數. awk程序中若含有以 $ 開頭的自定變量, 都將以如下方式解釋 : 以 i= 2 為例, $i = $2 表第二個字段數據. ( 實際上, $ 在 awk 中為一運算符(Operator), 用以取得字段數據.)

【編輯推薦】

  1. Ubuntu awk的字段變量內建變量
  2. Ubuntu awk概述內建有pipe的功能
  3. Ubuntu操作系統vim基本使用
  4. Ubuntu AutoIndex一般在編譯時已經安裝好
  5. Ubuntu MySQL設置同步服務器
責任編輯:佚名 來源: csdn
相關推薦

2009-09-16 16:22:04

正則表達式匹配

2009-09-16 18:08:14

正則表達式匹配單詞

2018-09-27 15:25:08

正則表達式前端

2020-09-04 09:16:04

Python正則表達式虛擬機

2009-09-16 13:24:30

PHP正則表達式匹配

2021-12-03 08:50:25

LeetCode正則表達式算法

2009-09-16 16:48:03

正則表達式匹配數字

2010-03-15 16:21:28

Python正則表達式

2024-09-14 09:18:14

Python正則表達式

2010-07-21 10:43:25

Perl正則表達式匹配

2009-09-16 17:02:15

正則表達式匹配字符串

2010-03-10 18:57:53

Python正則表達式

2009-06-10 13:51:25

Java正則表達式匹配替換

2009-09-16 13:53:17

PHP正則表達式匹配

2009-09-16 17:38:49

正則表達式匹配任意字符

2010-03-25 18:25:36

Python正則表達式

2021-01-27 11:34:19

Python正則表達式字符串

2017-05-12 10:47:45

Linux正則表達式程序基礎

2019-07-17 15:45:47

正則表達式字符串前端

2009-09-16 18:19:34

正則表達式組
點贊
收藏

51CTO技術棧公眾號

亚洲jjzzjjzz在线观看| 国产一级做a爰片久久| 欧美美女日韩| 欧美日韩国产精品成人| 三级4级全黄60分钟| 国产剧情一区在线| 蜜桃视频在线观看91| 天天综合色天天综合| 国产免费黄视频在线观看| 日韩高清在线电影| 91亚洲精品久久久| 欧美偷窥清纯综合图区| 中文字幕精品网| 中文在线аv在线| 日韩视频不卡中文| 成人在线观看黄色| 色婷婷狠狠综合| 波多野结衣在线中文| 国产精品嫩草影院av蜜臀| 国产深夜男女无套内射| 国产福利一区二区三区在线视频| 日韩精品一区二区三区外面 | 视频一区二区三区在线看免费看| 亚洲欧美激情视频在线观看一区二区三区| 黄色片视频在线免费观看| 国产成人精品一区二区三区网站观看| 一区二区不卡在线| 麻豆国产欧美一区二区三区| 午夜欧美性电影| 男女男精品视频网| 黄频视频在线观看| 成人中文字幕电影| 99免费视频观看| 最新日韩在线视频| 在线影视一区| 欧美猛男gaygay网站| 欧美野外wwwxxx| 亚洲最新在线视频| 久久久久久亚洲精品美女| 精品国产美女在线| 西瓜成人精品人成网站| 国产精品中文字幕在线观看| 欧美一区久久| 国内成+人亚洲| 日韩高清不卡一区| 妞干网视频在线观看| 国产日韩精品一区二区三区| 成人满18在线观看网站免费| 亚洲精品视频在线看| 污香蕉视频在线观看| 欧美午夜寂寞影院| sm久久捆绑调教精品一区| 中文欧美日本在线资源| 成人h动漫免费观看网站| 欧美综合国产精品久久丁香| 天天做天天爱天天综合网2021| 亚洲国产精品字幕| 成人免费91| 国产精品久久久久999| 午夜久久美女| 韩国黄色一级大片| 亚洲欧洲一区二区在线播放| 激情小说 在线视频| 亚洲精品久久视频| 国产精品x8x8一区二区| 91九色露脸| 激情综合网天天干| av三级影院| 精品日韩99亚洲| 成人av动漫| 国产日韩在线一区二区三区| 国产成人免费xxxxxxxx| 绯色av一区二区| 日韩电影中文字幕一区| www国产精品| 国产主播一区二区三区四区| 91最新地址在线播放| 你懂的好爽在线观看| 中日韩美女免费视频网站在线观看| 国产最新精品| 国产在线xxxx| 欧美午夜精品久久久久久人妖 | 国产一区二区三区色淫影院| 国产成人精品1024| 日韩私人影院| 日韩视频免费中文字幕| 欧美日韩亚洲一区三区| av观看免费在线| 欧美一级理论片| 精品国产一区二区三区久久久樱花| 一区二区三区不卡在线| 午夜精品久久一牛影视| 男人天堂久久| 精品一区二区三区免费毛片| 国产欧美日韩中文久久| 羞羞视频在线观看免费| 国产精品igao视频| 成人午夜激情在线| 日本在线观看视频| 国产精品成熟老女人| 成人av资源在线| 日本在线视频www鲁啊鲁| 国产精品欧美风情| 久久香蕉国产线看观看99| 毛片网站在线看| 99久久99久久精品国产片| 国产三级久久久| 美女精品视频| 国产精品美女xx| 亚洲国产视频直播| 少妇精品在线| 青青青在线观看视频| 亚洲精品一区二区三区蜜桃下载 | 欧美诱惑福利视频| 国产亚洲一二三区| 成人在线高清| 老司机午夜免费福利视频| 日韩美女在线视频| 视频一区二区三区在线| 精品美女在线观看视频在线观看 | 免费在线一级视频| 国产精品69av| 国产精品传媒在线| 91蝌蚪精品视频| 亚洲午夜无码av毛片久久| 国产香蕉一区二区三区在线视频| 激情自拍一区| 成本人h片动漫网站在线观看| 久久久av一区| 成av人片一区二区| 午夜影院在线观看国产主播| 激情欧美一区二区三区中文字幕| 亚洲v中文字幕| 竹菊久久久久久久| 日本免费观看网站| 国产一区二区三区在线播放免费观看 | 成人自拍在线| 久久99中文字幕| 精品99一区二区三区| 99精品国产一区二区青青牛奶 | 一本久道久久综合中文字幕 | 狠狠综合久久av一区二区小说 | 欧美亚洲福利| 伊人久久大香线蕉av一区| 一本色道a无线码一区v| 欧美色资源站| 久久久久久久久久久免费视频| 精品视频资源站| 亚洲综合中文| 日韩大片b站免费观看直播| 国产99视频在线观看| 中文字幕欧美三区| 国产一区毛片| 另类图片激情| 国产精品久久久久久久久久东京 | 国外成人在线播放| 国产日韩欧美精品在线| 国产成人77亚洲精品www| 特级西西人体www高清大胆| 亚洲精品成人久久久| 国产毛片久久| 午夜不卡影院| 欧美交换配乱吟粗大25p| 亚洲欧美精品一区二区| 国产精选一区二区三区| 蜜臀国产一区| 一区二区精品在线观看| 日韩一区在线视频| 久久综合九色综合久久久精品综合 | 色伦专区97中文字幕| 久久久久久久久久久黄色| 免费一区二区三区在线视频| 精品视频免费在线播放| 久久五月情影视| 国产精品久久久久天堂| 外国成人免费视频| 美女免费久久| 中文字幕第50页| 欧美老女人xx| 亚洲线精品一区二区三区| 精品久久一区| 波多野结衣在线观看| 300部国产真实乱| 欧美www在线| 亚洲自拍偷拍av| 99精品视频网| 一区二区视频| 在线国产网址| 日本成人黄色| 色婷婷综合久久久久| 91丝袜美腿高跟国产极品老师 | 欧美激情在线一区| 亚洲精品久久久蜜桃| 午夜精品一区二区三区国产| 95在线视频| 亚洲午夜精品一区二区| 国产97人人超碰caoprom| 欧美日韩亚洲综合一区| 国产福利一区二区三区在线视频| 久9re热视频这里只有精品|