使用awk的next命令的方法

在awk系列文章中,我們來看一下next 命令 ,它告訴 awk 跳過你所提供的所有剩下的模式和表達(dá)式,直接處理下一個(gè)輸入行。next 命令幫助你阻止運(yùn)行命令執(zhí)行過程中多余的步驟。
要明白它是如何工作的, 讓我們來分析一下 food_list.txt 它看起來像這樣:
Food List Items No Item_Name Price Quantity 1 Mangoes $3.45 5 2 Apples $2.45 25 3 Pineapples $4.45 55 4 Tomatoes $3.45 25 5 Onions $1.45 15 6 Bananas $3.45 30 >
運(yùn)行下面的命令,它將在每個(gè)食物數(shù)量小于或者等于 20 的行后面標(biāo)一個(gè)星號(hào):
# awk '$4 <= 20 { printf "%s/t%s/n", $0,"*" ; } $4 > 20 { print $0 ;} ' food_list.txt No Item_Name Price Quantity 1 Mangoes $3.45 5 * 2 Apples $2.45 25 3 Pineapples $4.45 55 4 Tomatoes $3.45 25 5 Onions $1.45 15 * 6 Bananas $3.45 30
上面的命令實(shí)際運(yùn)行如下:
1.它用$4 <= 20表達(dá)式檢查每個(gè)輸入行的第四列(數(shù)量(Quantity))是否小于或者等于 20,如果滿足條件,它將在末尾打一個(gè)星號(hào) (*)。
2.它用$4 > 20表達(dá)式檢查每個(gè)輸入行的第四列是否大于20,如果滿足條件,顯示出來。
但是這里有一個(gè)問題, 當(dāng)?shù)谝粋€(gè)表達(dá)式用{ printf "%s/t%s/n", $0,"**" ; }命令進(jìn)行標(biāo)注的時(shí)候在同樣的步驟第二個(gè)表達(dá)式也進(jìn)行了判斷這樣就浪費(fèi)了時(shí)間。因此當(dāng)我們已經(jīng)用第一個(gè)表達(dá)式打印標(biāo)志行的時(shí)候就不再需要用第二個(gè)表達(dá)式$4 > 20再次打印。
要處理這個(gè)問題, 我們需要用到next 命令:
# awk '$4 <= 20 { printf "%s/t%s/n", $0,"*" ; next; } $4 > 20 { print $0 ;} ' food_list.txt
當(dāng)輸入行用$4 <= 20 { printf "%s/t%s/n", $0,"*" ; next ; }命令打印以后,next命令將跳過第二個(gè)$4 > 20 { print $0 ;}表達(dá)式,繼續(xù)判斷下一個(gè)輸入行,而不是浪費(fèi)時(shí)間繼續(xù)判斷一下是不是當(dāng)前輸入行還大于 20。
next命令在編寫高效的命令腳本時(shí)候是非常重要的,它可以提高腳本速度。
相關(guān)文章
總結(jié)Linux中用于文本處理的awk、sed、grep命令用法
這篇文章主要介紹了Linux中用于文本處理的awk、sed、grep命令用法總結(jié),是Linux入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2016-03-21- 這篇文章主要介紹了Linux下的AWK入門教程,AWK工具甚至能夠自編程實(shí)現(xiàn)功能,是非常強(qiáng)大的文本分析工具,需要的朋友可以參考下2015-08-11
- 這篇文章主要介紹了Linux命令之a(chǎn)wk命令使用介紹,本文只是簡單的講解了sed的語法以及使用實(shí)例,需要的朋友可以參考下2016-06-05
awk命令實(shí)現(xiàn)求和、求平均值、求最大值、求最小值
這篇文章主要介紹了awk命令實(shí)現(xiàn)求和、求平均值、求最大值、求最小值,本文直接給出操作命令,需要的朋友可以參考下2015-02-09Linux如何使用awk文本處理工具進(jìn)行數(shù)組排序
awk是款文本處理工具,提供多種功能,那么如何使用awk進(jìn)行數(shù)組排序呢?下面小編就給大家詳細(xì)介紹下Linux中如何使用awk進(jìn)行數(shù)組排序2015-01-20Linux使用awk文本處理工具實(shí)現(xiàn)多行合并的實(shí)例
在Linux系統(tǒng)中使用awk文本處理工具,有時(shí)需要將多行合并,這就需要用到awknext語句了,下面有個(gè)不錯(cuò)的示例,需要的朋友可以看看2015-01-20Awk 命令學(xué)習(xí)總結(jié)、AWk命令系列學(xué)習(xí)(linux shell學(xué)習(xí)必備)
學(xué)習(xí)linux 的同人,都知道linux shell文本處理能力非常強(qiáng)大2013-11-19linux awk 數(shù)組排序多種實(shí)現(xiàn)方法
由于awk數(shù)組,是關(guān)聯(lián)數(shù)組。for…in循環(huán)輸出時(shí)候,默認(rèn)打印出來是無序數(shù)組2013-11-19linux下通過awk查看ip連接數(shù)(常見應(yīng)用一)
處理文本,是awk的強(qiáng)項(xiàng)了。 無論性能已經(jīng)速度都是讓人驚嘆,這里簡單介紹下2013-11-19linux awk 多文件操作2種實(shí)現(xiàn)方法
我們經(jīng)常會(huì)將2個(gè)有關(guān)聯(lián)文本文件進(jìn)行合并處理。分別從不同文件獲取需要的列,然后,整體輸出到一起。awk進(jìn)行多文件處理時(shí)候,常常會(huì)遇到2個(gè)方面問題,第一個(gè)是怎么樣合并多2013-11-19