成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Ubuntu awk的字段變量內(nèi)建變量

系統(tǒng) Linux
Ubuntu awk 所內(nèi)建的字段變量及其涵意如下 : 字段變量含義$0一字符串, 其內(nèi)容為目前 Ubuntu awk 所讀入的數(shù)據(jù)行.$1$0 上第一個字段的數(shù)據(jù).$2$0 上第二個字段的數(shù)據(jù).讀入數(shù)據(jù)行時, Ubuntu awk如何更新(update)這些內(nèi)建的字段變量?

給大家推薦一款很不錯的Ubuntu awk系統(tǒng)很有學習價值,這里我主要講解Ubuntu awk系統(tǒng)的應用,包括介紹Ubuntu awk知識等方面。如何執(zhí)行Ubuntu awk 于UNIX的命令行上鍵入諸如下列格式的指令: ( "$"表Shell命令行上的提示符號) $Ubuntu awk 'Ubuntu awk程序' 數(shù)據(jù)文件文件名 則Ubuntu awk會先編譯該程序, 然后執(zhí)行該程序來處理所指定的數(shù)據(jù)文件.

(上列方式系直接把程序?qū)懺赨NIX的命令行上)

Ubuntu awk程序的主要結構: Ubuntu awk程序中主要語法是 Pattern { Actions}, 故常見之Ubuntu awk 程序其型態(tài)如下 :

  1. Pattern1 { Actions1 }   
  2. Pattern2 { Actions2 }   
  3. Pattern3 { Actions3 }  

Pattern 是什么 ? Ubuntu awk 可接受許多不同型態(tài)的 Pattern. 一般常使用 "關系表達式"(Relational expression) 來當成 Pattern.

例如:
x > 34 是一個Pattern, 判斷變量 x 與 34 是否存在大于的關系. x == y 是一個Pattern, 判斷變量 x 與變量 y 是否存在等于的關系. 上式中 x >34 , x == y 便是典型的Pattern. Ubuntu awk 提供 C 語言中常見的關系運算符(Relational Operators) 如 此外, Ubuntu awk 還提供 ~ (match) 及 !~(not match) 二個關系運算符(注一).

其用法與涵義如下:
若 A 為一字符串, B 為一正則表達式(Regular Expression)A ~ B 判斷 字符串A 中是否 包含 能匹配(match)B表達式的子字符串. A !~ B 判斷 字符串A 中是否 不包含 能匹配(match)B表達式的子字符串.

例如 :
"banana" ~ /an/ 整個是一個Pattern. 因為"banana"中含有可以匹配 /an/ 的子字符串, 故此關系式成立(true),整個Pattern的值也是true. 相關細節(jié)請參考 附錄 A Patterns, 附錄 E Regular Expression (注一:) 有少數(shù)Ubuntu awk論著, 把 ~, !~ 當成另一類的 Operator,并不視為一種 Relational Operator. 本手冊中將這兩個運算符當成一種 Relational Operator.

Actions 是什么?

Actions 是由許多Ubuntu awk指令構成. 而Ubuntu awk的指令與 C 語言中的指令十分類似.

例如 :
Ubuntu awk的 I/O指令 : print, printf( ), getline...Ubuntu awk的 流程控制指令 : if(...){..} else{..}, while(...){...}... (請參考 附錄 B --- "Actions" ) Ubuntu awk 如何處理 Pattern { Actions } ? Ubuntu awk 會先判斷(Evaluate) 該 Pattern 的值, 若 Pattern 判斷后的值為true (或不為0的數(shù)字,或不是空的字符串), 則 Ubuntu awk將執(zhí)行該 Pattern 所對應的 Actions.反之, 若 Pattern 之值不為 true, 則Ubuntu awk將不執(zhí)行該 Pattern所對應的 Actions.

例如 : 若Ubuntu awk程序中有下列兩指令
50 > 23 {print "Hello! The word!!" } "banana" ~ /123/ { print "Good morning !" } Ubuntu awk會先判斷 50 >23 是否成立. 因為該式成立, 所以Ubuntu awk將印出"Hello! The word!!". 而另一 Pattern 為 "banana" ~/123/.

 因為"banana" 內(nèi)未含有任何子字符串可 match /123/, 該 Pattern 之值為false, 故Ubuntu awk將不會印出 "Good morning !"
Ubuntu awk 如何處理{ Actions } 的語法?(缺少Pattern部分) 有時語法 Pattern { Actions }中, Pattern 部分被省略,只剩 {Actions}.這種情形表示 "無條件執(zhí)行這個 Actions".

Ubuntu awk 的字段變量

Ubuntu awk 所內(nèi)建的字段變量及其涵意如下 : 字段變量含義$0一字符串, 其內(nèi)容為目前 Ubuntu awk 所讀入的數(shù)據(jù)行.$1$0 上第一個字段的數(shù)據(jù).$2$0 上第二個字段的數(shù)據(jù).讀入數(shù)據(jù)行時, Ubuntu awk如何更新(update)這些內(nèi)建的字段變量?

當 Ubuntu awk 從數(shù)據(jù)文件中讀取一個數(shù)據(jù)行時, Ubuntu awk 會使用內(nèi)建變量$0 予以記錄.每當 $0 被改動時 (例如 : 讀入新的數(shù)據(jù)行 或 自行變更 $0,...) Ubuntu awk 會立刻重新分析 $0 的字段情況, 并將 $0 上各字段的數(shù)據(jù)用 $1, $2, ..予以記錄.

Ubuntu awk的內(nèi)建變量(Built-in Variables)

Ubuntu awk 提供了許多內(nèi)建變量, 使用者于程序中可使用這些變量來取得相關信息.常見的內(nèi)建變量有 :

內(nèi)建變量含義
 
NF (Number of Fields)為一整數(shù), 其值表$0上所存在的字段數(shù)目.NR (Number of Records)為一整數(shù), 其值表Ubuntu awk已讀入的數(shù)據(jù)行數(shù)目.FILENAMEUbuntu awk正在處理的數(shù)據(jù)文件文件名.
 
例如 : Ubuntu awk 從資料文件 emp.dat 中讀入第一筆數(shù)據(jù)行 "A125 Jenny 100 210" 之后, 程序中:

  1. $0 之值將是 "A125 Jenny 100 210"   
  2. $1 之值為 "A125"   
  3. $2 之值為 "Jenny"   
  4. $3 之值為 100   
  5. $4 之值為 210   
  6. $NF 之值為 4   
  7. $NR 之值為 1   
  8. $FILENAME 之值為 "emp.dat"  

Ubuntu awk的工作流程 :

執(zhí)行Ubuntu awk時, 它會反復進行下列四步驟. 自動從指定的數(shù)據(jù)文件中讀取一個數(shù)據(jù)行. 自動更新(Update)相關的內(nèi)建變量之值. 如 : NF, NR, $0... 依次執(zhí)行程序中 所有 的 Pattern { Actions } 指令.

當執(zhí)行完程序中所有 Pattern { Actions } 時, 若數(shù)據(jù)文件中還有未讀取的數(shù)據(jù), 則反復執(zhí)行步驟1到步驟4. Ubuntu awk會自動重復進行上述4個步驟, 使用者不須于程序中編寫這個循環(huán) (Loop).

打印文件中指定的字段數(shù)據(jù)并加以計算Ubuntu awk 處理數(shù)據(jù)時, 它會自動從數(shù)據(jù)文件中一次讀取一筆記錄, 并會 將該數(shù)據(jù)切分成一個個的字段; 程序中可使用 $1, $2,... 直接取得 各個字段的內(nèi)容. 這個特色讓使用者易于用 Ubuntu awk 編寫 reformatter 來改變量據(jù)格式.

[ 范例 :] 以文件 emp.dat 為例, 計算每人應發(fā)工資并打印報表. [ 分析 :] Ubuntu awk 會自行一次讀入一列數(shù)據(jù), 故程序中僅需告訴 Ubuntu awk 如何處理所讀入的數(shù)據(jù)行. 執(zhí)行如下命令 : ( $ 表UNIX命令行上的提示符 ) $ Ubuntu awk '{ print $2, $3 * $4 }' emp.dat

執(zhí)行結果如下 : 屏幕出現(xiàn) :

  1. Jenny 21000   
  2. Dan 23650   
  3. Max 27170   
  4. John 27500   
  5. Linda 19950  

[ 說明 :] UNIX命令行上, 執(zhí)行Ubuntu awk的語法為: $Ubuntu awk 'Ubuntu awk程序' 欲處理的資料文件文件名本范例中的 程序部分 為 {print $2, $3 * $4}. 把程序置于命令行時, 程序之前后須以 ' 括住. emp.dat 為指定給該程序處理的數(shù)據(jù)文件文件名.

本程序中使用 : Pattern { Actions } 語法.

Pattern 部分被省略, 表無任何限制條件. 故Ubuntu awk讀入每筆數(shù)據(jù)行后都將無條件執(zhí)行這個 Actions. print為Ubuntu awk所提供的輸出指令, 會將數(shù)據(jù)輸出到stdout(屏幕). print 的參數(shù)間彼此以 "," (逗號) 隔開, 印出數(shù)據(jù)時彼此間會以空白隔開. (參考 附錄 D 內(nèi)建變量OFS) 將上述的 程序部分 儲存于文件 pay1.Ubuntu awk 中. 執(zhí)行命令時再指定Ubuntu awk程序文件 之文件名. 這是執(zhí)行Ubuntu awk的另一種方式, 特別適用于程序較大的情況, 其語法如下:

  1. $ Ubuntu awk -f Ubuntu awk程序文件名 數(shù)據(jù)文件文件名 故執(zhí)行下列兩命令,將產(chǎn)生同樣的結果.   
  2. $ Ubuntu awk -f pay1.Ubuntu awk emp.dat   
  3. $ Ubuntu awk '{ print $2, $3 * $4 }' emp.dat  

讀者可使用 "-f" 參數(shù),讓Ubuntu awk主程序使用“其它僅含 Ubuntu awk函數(shù) 的文件中的函數(shù) ”

其語法如下:

$ Ubuntu awk -f Ubuntu awk主程序文件名 -f Ubuntu awk函數(shù)文件名 數(shù)據(jù)文件文件名 (有關 Ubuntu awk 中函數(shù)的聲明與使用于 7.4 中說明) Ubuntu awk中也提供與 C 語言中類似用法的 printf() 函數(shù). 使用該函數(shù)可進一步控制數(shù)據(jù)的輸出格式. 編輯另一個Ubuntu awk程序如下, 并取名為 pay2.Ubuntu awk { printf("%6s Work hours: %3d Pay: %5d"n", $2,$3, $3* $4) }

執(zhí)行下列命令 $Ubuntu awk -f pay2.Ubuntu awk emp.dat 執(zhí)行結果屏幕出現(xiàn):

  1. Jenny Work hours: 100 Pay: 21000   
  2. Dan Work hours: 110 Pay: 23650   
  3. Max Work hours: 130 Pay: 27170   
  4. John Work hours: 125 Pay: 27500   
  5. Linda Work hours:  95 Pay: 19950  

【編輯推薦】

  1. Ubuntu awk概述內(nèi)建有pipe的功能
  2. Ubuntu操作系統(tǒng)vim基本使用
  3. Ubuntu AutoIndex一般在編譯時已經(jīng)安裝好
  4. Ubuntu MySQL設置同步服務器
  5. Ubuntu mysql配置設置過程
責任編輯:佚名 來源: CSDN博客
相關推薦

2019-11-26 14:00:58

awkLinux命令

2010-03-04 15:03:26

Ubuntu awk

2016-08-10 16:07:08

awkLinux開源

2016-08-11 09:18:33

awkShellLinux

2017-08-04 14:00:32

Linuxawk變量

2010-09-10 09:47:14

SQL變量指示

2010-02-22 15:04:53

Ubuntu 7.04

2021-03-25 12:00:18

Python變量常量

2010-03-04 15:28:01

Ubuntu Shel

2011-06-02 14:25:45

靜態(tài)變量

2013-05-09 02:38:27

2015-01-07 14:41:32

Android全局變量局部變量

2011-07-11 16:13:01

Java靜態(tài)變量實例變量

2024-05-29 08:49:22

Python全局變量局部變量

2025-04-29 10:30:00

C++Lambda函數(shù)

2010-07-13 09:34:24

Perl純變量

2010-09-08 17:29:37

SQL表變量

2010-11-26 14:20:28

MySQL系統(tǒng)變量

2009-07-21 16:58:31

Scala變量范圍

2021-03-28 23:37:35

線程專屬變量
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜在线观看免费 | 亚洲 日本 欧美 中文幕 | 99免费精品 | 中文日韩在线 | 精品伦精品一区二区三区视频 | 九九热九九 | 亚洲精品视频在线看 | 神马久久久久久久久久 | 男女深夜网站 | 亚洲精品永久免费 | 国产精品高清一区二区三区 | 亚洲精品国产一区 | 日韩精品久久久久久 | 国产福利在线视频 | 夜夜草导航 | 中文字幕一区二区三区在线视频 | 久久久www成人免费无遮挡大片 | 完全免费在线视频 | 青娱乐av | 中文字幕精品一区 | 一本综合久久 | 91在线精品一区二区 | 亚洲三级av| 国产成人精品免高潮在线观看 | 91精品国产91久久久久久 | 精品无码久久久久久国产 | 91视频在线观看 | 精国产品一区二区三区四季综 | 免费成人av | 日韩精品久久久 | 最近中文字幕免费 | 欧美一区二区三区在线播放 | www.av在线 | 国产欧美一区二区三区久久 | 亚洲一区二区三区在线免费 | 国产精品一区二区久久 | 欧美日韩精品一区二区三区四区 | 亚洲精品国产成人 | 日韩精品一区二区三区视频播放 | 日韩高清中文字幕 | 三级黄色片在线观看 |