如何使用 awk 的 next 命令

2021-09-08 19:00:43 字數 1461 閱讀 1526

在 awk 系列文章中,我們來看一下next 命令 ,它告訴 awk 跳過你所提供的所有剩下的模式和表示式,直接處理下乙個輸入行。next 命令幫助你阻止執行命令執行過程中多餘的步驟。

要明白它是如何工作的, 讓我們來分析一下 food_list.txt 它看起來像這樣:

food list items

no item_name price quantity

1 mangoes $3.45 5

4 tomatoes $3.45 25

5 onions $1.45 15

6 bananas $3.45 30

>

執行下面的命令,它將在每個食物數量小於或者等於 20 的行後面標乙個星號:

# awk '$4 <= 20  $4 > 20  ' food_list.txt 

no item_name price quantity

1 mangoes $3.45 5 *

4 tomatoes $3.45 25

5 onions $1.45 15 *

6 bananas $3.45 30

上面的命令實際執行如下:

1.它用$4 <= 20表示式檢查每個輸入行的第四列(數量(quantity))是否小於或者等於 20,如果滿足條件,它將在末尾打乙個星號 (*)。

2.它用$4 > 20表示式檢查每個輸入行的第四列是否大於20,如果滿足條件,顯示出來。

但是這裡有乙個問題, 當第乙個表示式用命令進行標註的時候在同樣的步驟第二個表示式也進行了判斷這樣就浪費了時間。因此當我們已經用第乙個表示式列印標誌行的時候就不再需要用第二個表示式$4 > 20再次列印。

要處理這個問題, 我們需要用到next 命令:

當輸入行用$4 <= 20 命令列印以後,next命令將跳過第二個$4 > 20 表示式,繼續判斷下乙個輸入行,而不是浪費時間繼續判斷一下是不是當前輸入行還大於 20。

next命令在編寫高效的命令指令碼時候是非常重要的,它可以提高指令碼速度。

awk命令的使用

awk程式語言 資料處理引擎 創造者 aho weinberger kernighan 基於模式匹配檢查輸入 逐行讀入逐行輸出 將期望的匹配結果print到螢幕 語法格式 awk 模式 檔案1 檔案2 常用的內建變數 nr 當前處理行的序數 行號 fs 字段分隔,預設為空格或tab位 n 當前行的第...

awk命令使用

awk是linux下很有用的列編輯工具。示例如下 檔案tran map.txt內容如下 tr zhuanzhang sa unknown 1.組織字串。將第一列以字串形式列印出來 awk tran map.txt tr sa 2.形成格式化 將第一列值轉換為第二列值 採用檔案指令碼方式。指令碼檔案為...

awk命令使用

linux awk command info awk是乙個行編輯器 和sed是互補關係 主要功能是擷取,它類似於cut的功能,但是功能更強大 不單可以擷取還可以運算 排序 還支援shell語句等一些功能 awk語法 awk option filename awk 認為每一行都是一條記錄,記錄與記錄的...