分享awk變量$0的妙用
腳本內(nèi)容:
#!/bin/bash
for ip in `cat ip.lst`
do
./ssh.exp $ip > /dev/null 2&>1
done
NK=`awk 'BEGIN{bs=4000000}/access/{if($1>bs){nk=NR-1;print nk}}' exp.log`
for nnk in $NK
do
awk -F"[@|']" 'NR=='"$nnk"' {print $2}' exp.log
done
然后又發(fā)現(xiàn)awk中$0的鬼怪。于是進(jìn)一步簡(jiǎn)化成了這個(gè)樣子:
#!/bin/bash
for ip in
`cat ip.lst`
do
./ssh.exp $ip > /dev/null 2&>1
done
awk 'BEGIN{bs=4000000}/access/{if($1>bs)print x};{x=$0}' exp.log|awk -F"[@|']" '{print $2}'
終于算是圓了自己用一句話搞定它的夢(mèng)。yeah~ 不過(guò)對(duì)這個(gè)原理還是不很明白。因?yàn)閜rint x;x=$0出來(lái)是上一行,但print $0則是本行。why? 網(wǎng)上對(duì)打印前一行還提出另一個(gè)寫(xiě)法,就看的更莫名其妙了:
awk '/regex/{print (x==""?"":x)};{x=$0}' $1
而打印后一行是這樣:
awk '/regex/{getline;print}' $1
不過(guò)這畢竟是恰好上下行而已,如果是要前幾行的,還是要靠NR運(yùn)算了。
因?yàn)閍wk的流式處理,print x;x=$0,這個(gè)時(shí)候的x要等到下一行時(shí)才print出來(lái)。
相關(guān)文章
Shell腳本實(shí)現(xiàn)的一個(gè)簡(jiǎn)易Web服務(wù)器例子分享
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)的一個(gè)簡(jiǎn)易Web服務(wù)器例子分享,本文實(shí)現(xiàn)的Web服務(wù)器非常簡(jiǎn)單實(shí)用,可以在你不想安裝nginx、apache等大型WEB服務(wù)器時(shí)使用,需要的朋友可以參考下2014-12-12
Shell中創(chuàng)建序列和數(shù)組(list、array)的方法
這篇文章主要介紹了Shell中創(chuàng)建序列和數(shù)組(list、array)的方法,本文講解了seq方法生成以及通過(guò)內(nèi)部{begin..end}生成法,需要的朋友可以參考下2015-07-07
幾個(gè)常用的Linux操作系統(tǒng)監(jiān)控腳本代碼
本文介紹了幾個(gè)常用的Linux監(jiān)控腳本,可以實(shí)現(xiàn)主機(jī)網(wǎng)卡流量、系統(tǒng)狀況、主機(jī)磁盤(pán)空間、CPU和內(nèi)存的使用情況等方面的自動(dòng)監(jiān)控與報(bào)警。根據(jù)自己的需求寫(xiě)出的shell腳本更能滿足需求,更能細(xì)化主機(jī)監(jiān)控的全面性2013-07-07
shell 隨機(jī)從文件中抽取若干行的實(shí)現(xiàn)方法
這篇文章主要介紹了shell 隨機(jī)從文件中抽取若干行的實(shí)現(xiàn)方法,需要的朋友可以參考下2016-03-03
淺析Shell腳本中的條件判斷[?]與[[?]]的區(qū)別
在編寫(xiě)?Shell?腳本時(shí),條件判斷是控制腳本流程的重要手段,Shell?提供了多種方式來(lái)進(jìn)行條件判斷,其中[?]和[[?]]是兩種常見(jiàn)的條件測(cè)試表達(dá)式,下面我們就來(lái)看看兩者的區(qū)別吧2024-12-12
Linux 分區(qū)初始化為物理卷,把物理卷加入卷組的方法
下面小編就為大家?guī)?lái)一篇Linux 分區(qū)初始化為物理卷,把物理卷加入卷組的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
Shell腳本生成Go的程序包的實(shí)現(xiàn)步驟
通過(guò)編寫(xiě)Shell腳本,我們可以大大簡(jiǎn)化Golang項(xiàng)目的打包和部署流程,本文就來(lái)介紹一下Shell腳本生成Go的程序包的實(shí)現(xiàn)步驟,感興趣的可以了解一下2024-01-01

