欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > awk實現Left、join查詢、去除重復值以及局部變量講解例子

awk實現Left、join查詢、去除重復值以及局部變量講解例子

熱門標簽:杭州機器人外呼系統 陜西電銷卡外呼系統怎么安裝 excel地址地圖標注 百度地圖標注圖標更換 地圖標注超出范圍怎么辦 旅游地圖標注大全 百度地圖的地圖標注 東莞電銷機器人價格一覽表 佛山高德地圖標注中心

最近看到論壇里面有幾個不錯的小例子,對于學習awk還是有幫助,在這兒詳細的說一下

一、類似數據庫中的left join查詢

復制代碼 代碼如下:

[root@krlcgcms01 mytest]# cat a.txt    //a.txt
111   aaa
222   bbb
333   cccc
444   ddd
[root@krlcgcms01 mytest]# cat b.txt    //b.txt
111  123  456
2    abc  cbd
444  rts  786


要求輸出結果是
111,aaa,123,456
444,ddd,rts,786

實現方法:

復制代碼 代碼如下:

[root@krlcgcms01 mytest]# awk 'NR==FNR{a[$1]=$2;}NR!=FNR a[$1]{print $1","a[$1]","$2","$3}' a.txt b.txt
111,aaa,123,456
444,ddd,rts,786

解釋:當NR和FNR相同時,這就說明在對第一個文件進行操作,a[$1]=$2表示,建立一個數組,以第一個字段為下標,第二個字段為值。當NR!=FNR時,說明在對第二個文件進行操作,注意:這個時候的$1和前面的$1不是同一個東西了,前面的$1表示的是a.txt的第一個字段,而后面的$1表示的是b.txt的第一個字段。a[$1]表示以b.txt中第一個字段的為下標的值,如果a[$1]有值的話,說明也存在于a.txt文件中,這樣就把數據print出來就行了。

實現方法2:

復制代碼 代碼如下:

[root@krlcgcms01 mytest]# awk -v OFS="," 'NR==FNR{a[$1]=$2;} NR!=FNR $1 in a { print $1,a[$1],$2,$3}' a.txt b.txt
111,aaa,123,456
444,ddd,rts,786

解釋:-v OFS=","這個是設置輸出時的列分割符,$1 in a這個是b.txt文件中的第一列的值是不是在數組a的key中,這個對做程序的來說很好理解,各種語言當中都有這樣的用法,或者函數。例如,php中有in_array函數。比較一下,方法1和方法2中的print,方法1我加了雙引號,方法2我卻沒有加,但是輸出的效果卻是一樣的。

二、去除重復的值

復制代碼 代碼如下:

[root@krlcgcms01 mytest]# cat repea   //文件repea
 a b
 c d
 e f
 b d
 b a
 f e
 1 2
 2 1

如果有a,b和b,a這樣的情況,就刪除b,a,當然數字也一樣;

實現方法1:

復制代碼 代碼如下:

awk '{for(i=1;i=NF;i++)a[i]=$i;asort(a);for(i=1;i=length(a);i++)printf a[i]"\t";printf "\n"}' repea|sort|uniq
1       2
a       b
b       d
c       d
e       f

解釋:for(i=1;i=NF;i++)a[i]=$i;將每一列中的二個字段放到數組中,asort(a),這個數組進行排序,后面的代碼是將數組數據輸出來,通sort命令對輸入的數據進行排序,相同數據會排在一起,通過uniq來進行去除相同的列。這種方法比較有通用性,不光適合二列,三列,四列都行。不過效率差了點。

實現方法2:

復制代碼 代碼如下:

[root@krlcgcms01 mytest]# awk '{a[$0]=$0;if (!($2 OFS $1 in a)) print a[$0] }' repea
a b
c d
e f
b d
1 2
[root@krlcgcms01 mytest]# awk '{a[$0];if (!($2 OFS $1 in a)) print  }' repea   
a b
c d
e f
b d
1 2

解釋:方法2的二種寫法,出來的結果是一樣的,a[$0];沒有賦值也沒有報錯,為什么呢?awk在遇到這樣沒有定義的變量時,會給它一個初值。if (!($2 OFS $1 in a))表示返轉字段不在數組a中,這里所說的在,表示key是不是存在,不是值。print 不寫默認是一行。

實現方法3:

復制代碼 代碼如下:

[root@krlcgcms01 mytest]# awk '!a[$1_$2]++!a[$2_$1]++' repea
a b
c d
e f
b d
1 2
[root@krlcgcms01 mytest]# awk '{if(!a[$1_$2]++!a[$2_$1]++)print $0;}' repea
a b
c d
e f
b d
1 2

解釋:!a[$1_$2]++!a[$2_$1]++等于if(!a[$1_$2]++!a[$2_$1]++),對于首次出現的記錄,a[$2_$1]的值是未定義的,由于后面的 ++ 是數學計算,所以a[$2_$1]會被賦值成數字0,也是由于 ++ 操作符,會先取值,再計算,從左到右 ++ 運算符的優先級大于!運算符的,所以對于第一行記錄實際上是if(! 0) print $0     ! 是取反,0 是假,! 0 就是真,那么就會執行后面的 print $0對于后面出現的重復記錄,a[$0] 經過 ++ 的計算已經變為 1、2、3 。。。而 ! 1  ! 2  ! 3 ... 都為假,不會打印。

三、awk的局部變量

這個例子來說明一下,awk怪異的局部變量

復制代碼 代碼如下:

[root@krlcgcms01 mytest]# cat sum 
 1       2 
 2       3 
 a       b 
 3       2 
 4       1 
 3       r 

把都是數字的行,最大的那個數字加起來,第一行是2,第二行是3,每四行是3,第五行是4,總和是12

復制代碼 代碼如下:

function max(one,two){
 if(one > two){
 sum = sum + one;
 }else{
 sum  = sum + two;
 }
 }

{if($1~"[0-9]" $2~"[0-9]") max($1,$2);}
 END{print "sum="sum}


在max方法里面,變量sum是會影響外面的,這里的sum是全局的。
[root@krlcgcms01 mytest]# awk -f add.sh sum
sum=12

復制代碼 代碼如下:

function max(one,two,sum){    //方法中的sum局部變量
if(one > two){
sum = sum + one;
}else{
sum  = sum + two;
}
}

{if($1~"[0-9]" $2~"[0-9]") max($1,$2,sum);}

END{print "sum="sum}         //所以為空

[root@krlcgcms01 mytest]# awk -f add.sh sum
sum=

復制代碼 代碼如下:

function max(one,two,sum){
 if(one > two){
 sum = sum + one;
 }else{
 sum  = sum + two;

 }

  return  sum                 //加上return就可以了
 }

{if($1~"[0-9]" $2~"[0-9]") sum = max($1,$2,sum);}

END{print "sum="sum}

標簽:朝陽 西藏 通遼 隨州 青島 南充 延邊 雅安

巨人網絡通訊聲明:本文標題《awk實現Left、join查詢、去除重復值以及局部變量講解例子》,本文關鍵詞  awk,實現,Left,join,查詢,去除,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《awk實現Left、join查詢、去除重復值以及局部變量講解例子》相關的同類信息!
  • 本頁收集關于awk實現Left、join查詢、去除重復值以及局部變量講解例子的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    天堂久久一区二区三区| 午夜成人免费电影| 极品瑜伽女神91| 国产精品99久| 99国产精品久久久久久久久久久| 国产无套精品一区二区三区| 给我免费观看片在线电影的| 欧洲美一区二区三区亚洲| 日韩av手机在线免费观看| 欧美性生交片4| 日韩午夜精品视频| 国产午夜精品福利| 亚洲综合久久av| 久久er99热精品一区二区| 成人动漫一区二区在线| 成人在线电影网站| 国产精品视频一区二区在线观看| 欧美日韩大陆在线| 国产午夜亚洲精品理论片色戒 | 色av成人天堂桃色av| 欧美一区二区黄色| 最新国产精品久久精品| 欧美96一区二区免费视频| www.综合网.com| 性色av蜜臀av色欲av| 在线免费观看日本欧美| 国产亚洲欧美中文| 国产suv精品一区二区883| 97人妻精品一区二区三区免| 欧美电影免费观看高清完整版 | 久久久天堂av| 亚洲韩国精品一区| 成人av在线看| 在线观看av一区二区| 亚洲香肠在线观看| 国产精品无码永久免费不卡| 欧美成人三级在线| 国产成人精品亚洲日本在线桃色 | 中文字幕一区二区三区视频| 99久久99久久免费精品蜜臀| 欧美三级电影精品| 亚洲欧美成aⅴ人在线观看| 狠狠色综合日日| 老鸭窝一区二区| 欧美一区二区三区四区视频| 久久精品国产免费| 91免费在线播放| 日韩成人短视频| 又紧又大又爽精品一区二区| 国产 日韩 欧美大片| 在线观看免费视频综合| 日韩黄色在线观看| 国产日韩视频一区| 欧美视频一二三区| 日本免费新一区视频| 成人网站免费观看| 国产欧美日韩激情| 精品综合久久久久久8888| 成人自拍小视频| 亚洲高清免费观看| gv天堂gv无码男同在线观看| 四虎永久免费观看| 久久久久久久无码| 欧美偷拍一区二区| 亚洲成人高清在线| 91看片淫黄大片一级在线观看| 色综合天天性综合| 日韩一级视频在线观看| 欧美日韩电影在线| www日韩在线| 亚洲国产成人91porn| 日韩欧美黄色网址| 欧美mv和日韩mv的网站| 蜜臀久久久99精品久久久久久| 影音先锋男人资源在线观看| 国产女同性恋一区二区| 欧美体内she精高潮| 久久人人爽爽爽人久久久| 国产精品一区一区| 4hu四虎永久在线影院成人| 丝袜美腿一区二区三区| 免费在线观看h片| 一区二区三区在线看| 国产a级黄色片| 中文幕一区二区三区久久蜜桃| 成人污视频在线观看| 欧美在线你懂得| 国产一区二区不卡老阿姨| 日韩成人短视频| 另类人妖一区二区av| 国精产品久拍自产在线网站| 午夜精品一区二区三区三上悠亚| 成人在线观看免费完整| 九九精品视频在线看| 欧美一区二区精品| 成年人看片网站| 国产精品激情偷乱一区二区∴| 黑人巨大猛交丰满少妇| 日韩一卡二卡三卡四卡| 91在线观看免费视频| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲专区区免费| 亚洲成人www| 色菇凉天天综合网| 国产mv日韩mv欧美| 久久奇米777| a毛片毛片av永久免费| 国产精品久久久久久久久快鸭| 国产三级av在线播放| 五月天网站亚洲| 精品视频一区二区三区免费| 成人一级黄色片| 久久综合精品国产一区二区三区 | 亚洲视频 欧洲视频| 四虎精品一区二区| 亚洲色图制服丝袜| 翔田千里88av中文字幕| 国产精品白丝jk白祙喷水网站| 欧美v国产在线一区二区三区| 久久性爱视频网站| 午夜一区二区三区视频| 欧美午夜一区二区三区免费大片| 成人国产电影网| 最好看的中文字幕久久| 男女性高潮免费网站| 懂色av中文一区二区三区| 国产女人aaa级久久久级| 四虎国产成人精品免费一女五男| 久久97超碰色| 久久久久久久久久久电影| 香蕉视频久久久| 亚洲一二三区视频在线观看| 欧美亚洲动漫另类| 蜜桃视频无码区在线观看| 亚洲一区二区三区在线播放| 欧美视频中文一区二区三区在线观看| 97se亚洲国产综合在线| 亚洲精品久久嫩草网站秘色| 欧美性大战久久久久久久蜜臀| 无码人妻一区二区三区在线视频| 亚洲精品乱码久久久久久黑人| 欧美性生活久久| 黄色激情在线观看| 日本不卡的三区四区五区| 欧美xxxxx牲另类人与| 色一情一交一乱一区二区三区| 精品一区二区国语对白| 国产日产精品1区| 国产成人在线网址| jlzzjlzz欧美大全| 亚洲一区二区三区精品在线| 正在播放一区二区| 男人舔女人下部高潮全视频| 国产乱色国产精品免费视频| 亚洲欧洲精品天堂一级| 欧美四级电影网| 亚洲最大免费视频| 日韩精品免费专区| 欧美综合色免费| 自拍视频一区二区| 国产资源在线一区| 亚洲天天做日日做天天谢日日欢 | 91免费观看视频| 天天色 色综合| 久久综合av免费| 色偷偷88欧美精品久久久| 国产激情视频一区二区三区欧美 | 中文一区二区在线观看| 一本久久精品一区二区| 人妻激情偷乱频一区二区三区| 免费视频一区二区| 国产精品日韩成人| 国产精品视频一区二区在线观看| 国产老头和老头xxxx×| 六月丁香婷婷色狠狠久久| 国产精品少妇自拍| 欧美精品一级二级| 少妇激情一区二区三区视频| 国产在线麻豆精品观看| 亚洲免费视频成人| 欧美mv日韩mv国产网站app| 人妻人人澡人人添人人爽| 日韩av一二区| www..com久久爱| 精品在线播放午夜| 依依成人综合视频| 久久综合久久鬼色| 精品视频一区二区不卡| 欧美一区二区三区粗大| 九色91porny| 国产乱淫av一区二区三区| 亚洲成人av中文| 中文字幕在线一区二区三区| 欧美一区二区人人喊爽| 日韩影院一区二区| 无码人妻丰满熟妇啪啪欧美| 九色91porny| 成人免费va视频| 捆绑变态av一区二区三区| 一区二区三区四区激情|