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

awk系列:在awk中如何使用流程控制語句

開源 系統運維
當你回顧所有到目前為止我們已經覆蓋的 awk 實例,從 awk 系列的開始,你會注意到各種實例的所有指令是順序執行的,即一個接一個地執行。但在某些情況下,我們可能希望基于一些條件進行文本過濾操作,即流程控制語句允許的那些語句。

 

當你回顧所有到目前為止我們已經覆蓋的 awk 實例,從 awk 系列的開始,你會注意到各種實例的所有指令是順序執行的,即一個接一個地執行。但在某些情況下,我們可能希望基于一些條件進行文本過濾操作,即流程控制語句允許的那些語句。

在 awk 編程中有各種各樣的流程控制語句,其中包括:

  • if-else 語句
  • for 語句
  • while 語句
  • do-while 語句
  • break 語句
  • continue 語句
  • next 語句
  • nextfile 語句
  • exit 語句

然而,對于本系列的這一部分,我們將闡述:if-else、for、while 和 do while 語句。請記住,我們已經在這個 awk 系列的第 6 部分介紹過如何使用 awk 的 next 語句。

1. if-else 語句

如你想的那樣。if 語句的語法類似于 shell 中的 if 語句:

  1. if  (條件 1) { 
  2.      動作 1 
  3. else { 
  4.       動作 2 

在上述語法中,條件 1 和條件 2 是 awk 表達式,而動作 1 和動作 2 是當各自的條件得到滿足時所執行的 awk 命令。

當條件 1 滿足時,意味著它為真,那么動作 1 被執行并退出 if 語句,否則動作 2 被執行。

if 語句還能擴展為如下的 if-else_if-else 語句:

  1. if (條件 1){ 
  2.      動作 1 
  3. else if (條件 2){ 
  4.       動作 2 
  5. else
  6.      動作 3 

對于上面的形式,如果條件 1 為真,那么動作 1 被執行并退出 if 語句,否則條件 2 被求值且如果值為真,那么動作 2 被執行并退出 if 語句。然而,當條件 2 為假時,那么動作 3 被執行并退出 if 語句。

這是在使用 if 語句的一個實例,我們有一個用戶和他們年齡的列表,存儲在文件 users.txt 中。

我們要打印一個清單,顯示用戶的名稱和用戶的年齡是否小于或超過 25 歲。

  1. aaronkilik@tecMint ~ $ cat users.txt 
  2. Sarah L         35      F 
  3. Aaron Kili      40      M 
  4. John  Doo       20      M 
  5. Kili  Seth      49      M 

我們可以寫一個簡短的 shell 腳本來執行上文中我們的工作,這是腳本的內容:

  1. #!/bin/bash 
  2. awk ' { 
  3.         if ( $3 <= 25 ){ 
  4.            print "User",$1,$2,"is less than 25 years old." ; 
  5.         } 
  6.         else { 
  7.            print "User",$1,$2,"is more than 25 years old" ; 
  8.         } 
  9. }'    ~/users.txt 

然后保存文件并退出,按如下方式使腳本可執行并運行它:

  1. $ chmod +x test.sh
  2. $ ./test.sh 

輸出樣例

  1. User Sarah L is more than 25 years old 
  2. User Aaron Kili is more than 25 years old 
  3. User John Doo is less than 25 years old. 
  4. User Kili Seth is more than 25 years old 

2. for 語句

如果你想在一個循環中執行一些 awk 命令,那么 for 語句為你提供一個做這個的合適方式,格式如下:

  1. for ( 計數器的初始化 ; 測試條件 ; 計數器增加 ){ 
  2.       動作 

這里,該方法是通過一個計數器來控制循環執行來定義的,首先你需要初始化這個計數器,然后針對測試條件運行它,如果它為真,執行這些動作并最終增加這個計數器。當計數器不滿足條件時,循環終止。

在我們想要打印數字 0 到 10 時,以下 awk 命令顯示 for 語句是如何工作的:

  1. $ awk 'BEGIN{ for(counter=0;counter<=10;counter++){ print counter} }' 

輸出樣例

  1. 10 

3. while 語句

while 語句的傳統語法如下:

  1. while ( 條件 ) { 
  2.           動作 

這個條件是一個 awk 表達式而動作是當條件為真時被執行的 awk 命令。

下面是一個說明使用 while 語句來打印數字 0 到 10 的腳本:

  1. #!/bin/bash 
  2. awk ' BEGIN{ counter=0; 
  3.         while(counter<=10){ 
  4.               print counter; 
  5.               counter+=1; 
  6.         } 
  7. }' 

保存文件并使腳本可執行,然后運行它:

  1. $ chmod +x test.sh 
  2. $ ./test.sh 

輸出樣例

  1. 10 

4. do while 語句

它是上文中 while 語句的一個變型,具有以下語法:

  1. do { 
  2.      動作 
  3.  while (條件) 

這輕微的區別在于,在 do while 語句下,awk 的命令在求值條件之前執行。使用上文 while 語句的例子,我們可以通過按如下所述修改 test.sh 腳本中的 awk 命令來說明 do while 語句的用法:

  1. #!/bin/bash 
  2. awk ' BEGIN{ counter=0; 
  3.         do{ 
  4.             print counter; 
  5.             counter+=1; 
  6.         } 
  7.         while (counter<=10) 
  8. }' 

修改腳本之后,保存文件并退出。按如下方式使腳本可執行并執行它:

  1. $ chmod +x test.sh 
  2. $ ./test.sh 

輸出樣例

  1. 10 

總結

這不是關于 awk 的流程控制語句的一個全面的指南,正如我早先提到的,在 awk 里還有其他幾個流程控制語句。

盡管如此,awk 系列的這一部分使應該你明白了一個明確的基于某些條件控制的 awk 命令是如何執行的基本概念。

你還可以了解其余更多的流程控制語句以獲得更多關于該主題的理解。***,在 awk 的系列下一節,我們將進入編寫 awk 腳本。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2010-05-11 12:53:58

Unix awk

2016-08-10 16:07:08

awkLinux開源

2016-08-11 09:18:33

awkShellLinux

2016-10-08 20:58:50

awkLinux編寫腳本

2016-07-29 15:13:00

awk文本處理工具編程

2010-05-11 12:17:51

Unix awk

2016-08-10 11:19:11

awkLinux開源

2019-12-03 10:00:19

awkLinux循環

2009-09-04 10:42:56

C#流程控制語句

2010-07-19 10:11:58

Perl流程控制語句

2024-11-01 16:05:26

2024-09-11 17:00:36

2024-11-05 12:59:42

while 循環迭代字節碼

2022-03-20 10:40:11

Linuxawk 腳本

2015-07-23 15:17:37

JavaScript循環語句

2011-08-24 16:36:00

T-SQL

2010-05-11 10:29:06

Unix awk

2017-05-31 17:09:52

LinuxShell命令

2019-12-12 18:00:54

awkLinux開源

2024-06-06 09:09:41

SQL循環控制命令
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 毛片一区二区三区 | 国产高清免费 | 伊人看片 | 欧美精品在线播放 | 精品二区视频 | 国产一区二区三区视频免费观看 | www.788.com色淫免费 | 天堂亚洲 | 神马久久久久久久久久 | 一级片在线观看 | 亚洲国产福利视频 | 日美女逼逼 | 欧美精品一区二区免费视频 | 理论片午午伦夜理片影院 | 欧美成人hd| 国产精品日韩一区 | 亚洲精品二区 | 欧美涩| 日韩视频免费看 | 精品久久久久久久久久久久 | 久久久久久久夜 | 国产精品久久久久久久久免费樱桃 | 精品国产免费一区二区三区五区 | 久久精品青青大伊人av | 国产精品美女www | 欧美黑人巨大videos精品 | 日本精品在线观看 | 国产精品1区2区3区 国产在线观看一区 | 精品国产乱码久久久久久丨区2区 | 一区二区三区视频在线观看 | 成年无码av片在线 | 色男人的天堂 | 超碰在线免费 | 日本欧美国产在线观看 | 精品一区二区av | 懂色av一区二区三区在线播放 | 日韩成人高清在线 | 亚洲精品久久久久久久久久久 | 欧美人成在线视频 | 在线婷婷 | 国产精品一区二区视频 |