Linux之a(chǎn)wk三元運算符和打印奇偶行

一萄唇、三元運算符

  1. 還記的之前學(xué)習(xí)編程語言時的 " if ... else ... " 結(jié)構(gòu)嗎?其實我們使用三元運算符就可以代替其功能串塑。
  2. 三元運算符的形式1:[ 結(jié)果 = 條件 ? 結(jié)果1:結(jié)果2 ]
  3. 三元運算符的形式2:[ 條件 舰讹? 表達式1 : 表達式2 ]
  4. 代碼示例,如下:
(1) if ... else ... 形式
etl@bejedw09:/home/etl/cya> cat file
student1 98
student2 89
student3 93
student4 78
student5 91
student6 96
etl@bejedw09:/home/etl/cya> awk '{if($2>=90){print $1,"perfect"} \
else { print $1,"come on !!!" } }' file
student1 perfect
student2 come on !!!
student1 perfect
student2 come on !!!
student1 perfect
student1 perfect

(2)三元運算符示例1
etl@bejedw09:/home/etl/cya> awk '{type=$2>=90? "perfect":"come on !!!";\
print $1 , type}' file
student1 perfect
student2 come on !!!
student1 perfect
student2 come on !!!
student1 perfect
student1 perfect

(3)三元運算符示例2
etl@bejedw09:/home/etl/cya> awk '{$2=90? a++:b++ } END{print a , b}' file
4 2
#可以使用三元運算符統(tǒng)計個數(shù)狸相,成績大于等于90分的學(xué)生有4個薛匪,小于90的也有2個

二、打印奇偶行

在 Linux 環(huán)境中如果想要打印文件的奇偶行脓鹃,方法實在是太多了逸尖,先來看 awk 是如何實現(xiàn)的

etl@bejedw09:/home/etl/cya> awk 'NR%2==0{print $0}' file
student2 89
student4 78
student6 96
etl@bejedw09:/home/etl/cya> awk 'NR%2!=0{print $0}' file
student1 98
student3 93
student5 91
#awk打印文件的奇偶行

再來看看 sed 又是如何實現(xiàn)的

etl@bejedw09:/home/etl/cya> sed -n '2~2p' file
student2 89
student4 78
student6 96
etl@bejedw09:/home/etl/cya> sed -n '1~2p' file
student1 98
student3 93
student5 91
#sed打印文件的奇偶行

上面的兩種 awk 和 sed 打印文件奇偶行的方式已經(jīng)是非常經(jīng)典的了,這里再用 awk 的另外一種方式實現(xiàn)打印文件奇偶行

etl@bejedw09:/home/etl/cya> awk 'i=!i' file
student1 98
student3 93
student5 91
etl@bejedw09:/home/etl/cya> awk '!(i=!i)' file
student2 89
student4 78
student6 96

#上面這兩條命令是如何實現(xiàn)打印文件奇偶行的哪瘸右?看下面的文字解釋和代碼示例就曉得了^_^
#提示1:在 awk 中娇跟,如果省略了模式對應(yīng)的動作,當(dāng)前行滿足模式時太颤,默認(rèn)打印整行苞俘,即
#      { print $0 };
代碼示例1:
etl@bejedw09:/home/etl/cya> awk '1' file
student1 98
student2 89
student3 93
student4 78
student5 91
student6 96
etl@bejedw09:/home/etl/cya> awk '0' file
etl@bejedw09:/home/etl/cya> 


#提示2:當(dāng) awk 開始處理第一行時,變量 i 被初始化龄章,變量 i 在被初始化時值為 "空"吃谣,
#      在 awk 中,數(shù)字0或者 "空字符串"表示 "假"做裙,非0或非空字符串表示"真" 所以
#      可以認(rèn)定上述模式為假岗憋,那就是模式不成立所以不需要執(zhí)行對應(yīng)的動作,但是i直接取
#      反了,對假取反就是真菇用,將取反后的值又賦值給了變量i澜驮,所以此刻執(zhí)行print {$0}
#      看下面的命令,我們可以追蹤變量 i 的值惋鸥,再根據(jù) "代碼示例1" ,屏幕前這么cute杂穷、
#      這么clever的讀者一定明明白白的了吧
代碼示例2:
etl@bejedw09:/home/etl/cya> awk '{ i=!i; print i }' file
1
0
1
0
1
0
  • 結(jié)尾
    本文就打印文件奇偶行的問題花費的筆墨最多,而且介紹了三種方法來實現(xiàn)卦绣,要知道實際開發(fā)中打印文件奇偶行并不常見耐量,至少我工作到現(xiàn)在,幾乎每天都要處理文本滤港,還沒有碰到過打印文件奇偶行的需求廊蜒,那么我們?yōu)槭裁催€要學(xué)習(xí)哪趴拧?我也想過這個問題,上過高中的同學(xué)都有過這么的經(jīng)歷山叮,最后高考的題都有固定的題型著榴,我們在平時的學(xué)習(xí)中做練習(xí)冊的時候會發(fā)現(xiàn)有些題型怪怪的,根本不符合高考的出題規(guī)范屁倔,那么這類題的意義是什么哪脑又?高中數(shù)學(xué)老師的解釋是:“這類題型高考不會出,可是這類題你們也要做锐借,因為這可以讓你們更好的理解這個知識點”问麸,同樣的,在這里它就可以幫我們更好的理解 awk 這個命令钞翔,如果你把第三種打印文件奇偶行的方式搞的很明白的話严卖,你就會發(fā)現(xiàn),你更加了解 awk 包括它的一些默認(rèn)處理布轿,你和 awk 的距離就拉近了哮笆,以后遇到文本格式化問題使用 awk 就會變得得心應(yīng)手 ^_^
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市驮捍,隨后出現(xiàn)的幾起案子疟呐,更是在濱河造成了極大的恐慌,老刑警劉巖东且,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異本讥,居然都是意外死亡珊泳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進店門拷沸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來色查,“玉大人,你說我怎么就攤上這事撞芍⊙砹耍” “怎么了?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵序无,是天一觀的道長验毡。 經(jīng)常有香客問我,道長帝嗡,這世上最難降的妖魔是什么晶通? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮哟玷,結(jié)果婚禮上狮辽,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好喉脖,可當(dāng)我...
    茶點故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布椰苟。 她就那樣靜靜地躺著,像睡著了一般树叽。 火紅的嫁衣襯著肌膚如雪尊剔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天菱皆,我揣著相機與錄音须误,去河邊找鬼。 笑死仇轻,一個胖子當(dāng)著我的面吹牛京痢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播篷店,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼祭椰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了疲陕?” 一聲冷哼從身側(cè)響起方淤,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蹄殃,沒想到半個月后携茂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡诅岩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年讳苦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吩谦。...
    茶點故事閱讀 40,926評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸳谜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出式廷,到底是詐尸還是另有隱情咐扭,我是刑警寧澤,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布滑废,位于F島的核電站蝗肪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏策严。R本人自食惡果不足惜穗慕,卻給世界環(huán)境...
    茶點故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望妻导。 院中可真熱鬧逛绵,春花似錦怀各、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胰苏,卻和暖如春硕蛹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背硕并。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工法焰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人倔毙。 一個月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓埃仪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親陕赃。 傳聞我的和親對象是個殘疾皇子卵蛉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,930評論 2 361

推薦閱讀更多精彩內(nèi)容

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,176評論 2 33
  • 轉(zhuǎn)載 原文的排版和內(nèi)容都更加友好,并且詳細,我只是在這里貼出了一部分留作自己以后參考和學(xué)習(xí),如希望更詳細了解AWK...
    XKirk閱讀 3,223評論 2 25
  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,104評論 0 0
  • 明天诉儒,你好 牛奶咖啡 - Lost & Found去尋找 我想親愛的你有些疲倦吧 有這樣一群人葡缰, 他們早出晚歸, ...
    vict_閱讀 769評論 0 2
  • 熹微允睹,我于纏綿的夢意中蘇醒运准,抖落了臂上晶瑩的露珠,隨著徐徐清風(fēng)伸展腰肢缭受。 又是一個平凡無奇的日子!曾愛暖陽该互、皎月米者、...
    鄭紅燦1998閱讀 349評論 0 1