国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Linux Shell > 正文

分享awk變量$0的妙用

2020-07-27 19:23:30
字體:
來源:轉載
供稿:網友

腳本內容:

復制代碼 代碼如下:

#!/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

然后又發現awk中$0的鬼怪。于是進一步簡化成了這個樣子:

復制代碼 代碼如下:

#!/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}'

終于算是圓了自己用一句話搞定它的夢。yeah~ 不過對這個原理還是不很明白。因為print x;x=$0出來是上一行,但print $0則是本行。why? 網上對打印前一行還提出另一個寫法,就看的更莫名其妙了:
awk '/regex/{print (x==""?"":x)};{x=$0}' $1

而打印后一行是這樣:
awk '/regex/{getline;print}' $1

不過這畢竟是恰好上下行而已,如果是要前幾行的,還是要靠NR運算了。

因為awk的流式處理,print x;x=$0,這個時候的x要等到下一行時才print出來。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贞丰县| 苏尼特左旗| 翁牛特旗| 金沙县| 固原市| 敖汉旗| 武功县| 项城市| 北宁市| 惠东县| 庆阳市| 格尔木市| 灌阳县| 沂水县| 西城区| 随州市| 额济纳旗| 夹江县| 吉木乃县| 方城县| 静海县| 东乡族自治县| 会理县| 宣武区| 新巴尔虎左旗| 荥经县| 秦皇岛市| 乳源| 寿宁县| 康保县| 玉龙| 茂名市| 西平县| 右玉县| 通许县| 兴海县| 子长县| 凉城县| 东丽区| 南宁市| 黄石市|