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

Ubuntu awk的字段變量內建變量

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

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

(上列方式系直接把程序寫在UNIX的命令行上)

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

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

Pattern 是什么 ? Ubuntu awk 可接受許多不同型態的 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. 相關細節請參考 附錄 A Patterns, 附錄 E Regular Expression (注一:) 有少數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的數字,或不是空的字符串), 則 Ubuntu awk將執行該 Pattern 所對應的 Actions.反之, 若 Pattern 之值不為 true, 則Ubuntu awk將不執行該 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" 內未含有任何子字符串可 match /123/, 該 Pattern 之值為false, 故Ubuntu awk將不會印出 "Good morning !"
Ubuntu awk 如何處理{ Actions } 的語法?(缺少Pattern部分) 有時語法 Pattern { Actions }中, Pattern 部分被省略,只剩 {Actions}.這種情形表示 "無條件執行這個 Actions".

Ubuntu awk 的字段變量

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

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

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

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

內建變量含義
 
NF (Number of Fields)為一整數, 其值表$0上所存在的字段數目.NR (Number of Records)為一整數, 其值表Ubuntu awk已讀入的數據行數目.FILENAMEUbuntu awk正在處理的數據文件文件名.
 
例如 : Ubuntu awk 從資料文件 emp.dat 中讀入第一筆數據行 "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的工作流程 :

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

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

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

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

執行結果如下 : 屏幕出現 :

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

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

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

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

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

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

其語法如下:

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

執行下列命令 $Ubuntu awk -f pay2.Ubuntu awk emp.dat 執行結果屏幕出現:

  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概述內建有pipe的功能
  2. Ubuntu操作系統vim基本使用
  3. Ubuntu AutoIndex一般在編譯時已經安裝好
  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變量常量

2011-06-02 14:25:45

靜態變量

2013-05-09 02:38:27

2010-03-04 15:28:01

Ubuntu Shel

2015-01-07 14:41:32

Android全局變量局部變量

2011-07-11 16:13:01

Java靜態變量實例變量

2024-05-29 08:49:22

Python全局變量局部變量

2025-04-29 10:30:00

C++Lambda函數

2010-07-13 09:34:24

Perl純變量

2010-09-08 17:29:37

SQL表變量

2010-11-26 14:20:28

MySQL系統變量

2009-07-21 16:58:31

Scala變量范圍

2021-03-28 23:37:35

線程專屬變量
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久久久久久高潮一区二区 | 中文字幕一区二区三区在线乱码 | 日韩欧美1区2区 | 国产在线视频一区二区 | 国产精品欧美一区喷水 | 91日韩 | 亚洲国产精品人人爽夜夜爽 | 国产专区在线 | 久久综合狠狠综合久久 | 日韩精品一区二区三区在线播放 | 亚洲国产精品精华素 | 国产黄色大片在线观看 | 中文成人在线 | 91麻豆精品一区二区三区 | 日韩成人av在线 | 国产精品视频免费 | 国产激情视频在线 | 久久国产香蕉 | 亚洲精品一区二区三区中文字幕 | 91偷拍精品一区二区三区 | 中文字幕国产精品视频 | 中文字幕在线观看一区 | 涩涩99 | 涩色视频在线观看 | 久久久久av | 国产成人一区二区三区久久久 | 久久av一区二区三区 | 人人看人人干 | 99日韩| 99综合在线 | 免费av在线网站 | 国产激情一区二区三区 | 国产欧美一区二区三区在线播放 | 精品久久影院 | 国产探花在线观看视频 | 久久久蜜桃 | 国产精品www | 国产精品美女久久久久久免费 | 免费日韩网站 | 欧美一区二区成人 | 好姑娘影视在线观看高清 |