校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 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查詢、去除重復值以及局部變量講解例子的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    精品久久久久久综合日本欧美| 在线亚洲人成电影网站色www| 日韩在线播放一区二区| 一区二区三区四区精品在线视频| 国产日韩亚洲欧美综合| 国产精品嫩草久久久久| 国产精品成人免费精品自在线观看| 精品国产成人系列| 久久九九国产精品| 国产精品欧美极品| 亚洲人成在线播放网站岛国| 亚洲综合色丁香婷婷六月图片| 一区二区三区中文字幕| 婷婷一区二区三区| 国产一区在线视频| 春色校园综合激情亚洲| aa级大片欧美| 4438x亚洲最大成人网| 日韩区在线观看| 久久九九全国免费| 夜夜嗨av一区二区三区| 青青草国产精品97视觉盛宴| 国产精品影音先锋| 欧美在线免费播放| 欧美电影免费提供在线观看| 国产亲近乱来精品视频| 亚洲综合色丁香婷婷六月图片| 五月婷婷激情综合| 成人免费视频免费观看| 欧美日韩国产一级二级| 久久久精品国产99久久精品芒果| 国产精品萝li| 男男视频亚洲欧美| 91免费精品国自产拍在线不卡| 欧美三区在线观看| 国产精品女同互慰在线看| 视频一区免费在线观看| www.色精品| 精品国产一区二区三区久久影院| 亚洲视频在线一区| 免费成人av在线| 久久亚洲春色中文字幕久久久| 成人欧美一区二区三区1314| 日本在线不卡视频| 色婷婷久久综合| 久久久久久久国产精品影院| 亚洲福利视频导航| www.日本不卡| 国产网站一区二区| 免费在线观看一区| 欧美在线免费视屏| 亚洲三级电影网站| www.色综合.com| 亚洲国产精品高清| 国产在线视频一区二区| 91精品在线一区二区| 亚洲精品中文字幕乱码三区| 国产成人高清在线| 2023国产一二三区日本精品2022| 性久久久久久久久| 欧美午夜一区二区三区| 亚洲狠狠丁香婷婷综合久久久| 国产成人av福利| 久久久精品中文字幕麻豆发布| 首页欧美精品中文字幕| 欧美日韩高清一区二区| 亚洲午夜电影网| 欧洲国产伦久久久久久久| 亚洲欧美精品午睡沙发| 色综合一区二区三区| 亚洲欧美影音先锋| 91蝌蚪porny| 亚洲丝袜另类动漫二区| 日本精品裸体写真集在线观看| 最新国产成人在线观看| 91在线看国产| 亚洲欧美日韩成人高清在线一区| 91亚洲国产成人精品一区二三| 中文字幕二三区不卡| 99国产精品久久久久久久久久| 国产精品久久久久永久免费观看| 国产超碰在线一区| 樱花草国产18久久久久| 欧美在线短视频| 日韩不卡一二三区| 精品国产乱码久久久久久免费| 国产中文字幕一区| 欧美国产精品劲爆| 欧美伊人精品成人久久综合97 | 日韩成人免费电影| 91精品国产高清一区二区三区蜜臀 | 久久精品网站免费观看| 懂色av一区二区夜夜嗨| 国产精品不卡一区二区三区| 在线欧美日韩精品| 日本麻豆一区二区三区视频| 2021国产精品久久精品| 福利一区在线观看| 亚洲尤物视频在线| 久久午夜色播影院免费高清| 成人高清伦理免费影院在线观看| 欧美韩国日本一区| 欧美性生活久久| 精品一区二区三区在线播放视频| 国产片一区二区| 欧美精品xxxxbbbb| 岛国av在线一区| 一区二区成人在线视频| 精品国产1区2区3区| 色综合色综合色综合色综合色综合 | 色噜噜狠狠色综合欧洲selulu| 亚洲一区二区三区美女| 久久综合中文字幕| 91官网在线免费观看| 国内精品不卡在线| 亚洲国产日韩综合久久精品| 国产人成一区二区三区影院| 欧美写真视频网站| 成人美女视频在线观看| 午夜精品久久久久久| 国产精品人妖ts系列视频| 欧美一区二区三区免费视频| 99麻豆久久久国产精品免费 | 6080日韩午夜伦伦午夜伦| 大白屁股一区二区视频| 爽好久久久欧美精品| 亚洲欧美成人一区二区三区| 久久久夜色精品亚洲| 欧美久久久久久久久中文字幕| 99久久婷婷国产精品综合| 精品一区二区三区视频在线观看| 亚洲自拍另类综合| 中文字幕一区二区三中文字幕| 欧美成人国产一区二区| 欧美视频第二页| 91蝌蚪porny成人天涯| 国产不卡一区视频| 国产剧情一区在线| 精品一区二区三区免费毛片爱| 亚洲国产欧美日韩另类综合 | 欧美r级在线观看| 欧美精品乱人伦久久久久久| 91香蕉视频mp4| 白白色 亚洲乱淫| 不卡av在线网| av电影在线观看一区| 成人免费观看男女羞羞视频| 国产精品一区二区在线看| 国产一区二区免费在线| 国产精一区二区三区| 国产一区二区三区精品视频| 久久av中文字幕片| 激情文学综合丁香| 国产一区二区电影| 国产一区激情在线| av在线播放一区二区三区| 国产一区欧美日韩| 国产suv精品一区二区883| 亚洲国产欧美日韩另类综合| 亚洲成人免费看| 麻豆成人91精品二区三区| 麻豆成人91精品二区三区| 国产一区二区久久| 成人免费av网站| 欧美无砖专区一中文字| 777奇米四色成人影色区| 欧美mv日韩mv国产网站app| 欧美成人伊人久久综合网| 精品国免费一区二区三区| 久久久久久综合| 亚洲欧洲日本在线| 亚洲大片精品永久免费| 久久99精品国产| 不卡的av电影在线观看| 欧美天堂一区二区三区| 日韩免费一区二区三区在线播放| 久久色成人在线| 亚洲欧美自拍偷拍色图| 午夜视频一区二区| 国精产品一区一区三区mba桃花 | 99视频有精品| 欧美日韩国产精品自在自线| 久久这里只精品最新地址| 中文字幕在线免费不卡| 丝袜亚洲另类丝袜在线| 高清国产一区二区| 欧美精品tushy高清| 欧美国产禁国产网站cc| 日韩电影在线观看网站| 成人av影院在线| 日韩一区二区免费在线电影 | 色8久久人人97超碰香蕉987| 日韩一区二区免费高清| 综合激情成人伊人| 久久精品99国产精品| 色八戒一区二区三区| 久久久99久久| 强制捆绑调教一区二区| 91精彩视频在线观看| 久久久激情视频|