欧美阿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>
    亚洲男人天堂一区| 国产精品成人99一区无码| 国产三级黄色片| 亚洲精品在线免费观看视频| 亚洲va欧美va天堂v国产综合| 91农村精品一区二区在线| 国产三级国产精品国产国在线观看| 久久久久国色av免费看影院| 激情五月激情综合网| 日本少妇xxxxx| 久久久精品一品道一区| 国内成+人亚洲+欧美+综合在线| 永久免费看mv网站入口78| 欧美tickling网站挠脚心| 久久国产日韩欧美精品| 蜜臀久久99精品久久久久久| 2024国产精品| 国产另类ts人妖一区二区| 免费91在线观看| 国产精品久久久久久久久久久免费看| 美国毛片一区二区| 精品一区二区在线视频| 亚洲天堂久久新| 精品国免费一区二区三区| 久久99精品久久久久| 无码少妇一区二区| 精品国产伦一区二区三区免费 | 国产制服丝袜在线| 成人免费毛片xxx| 中文字幕一区二区三区在线播放| 粉嫩高潮美女一区二区三区| 色综合欧美在线视频区| 伊人一区二区三区| 男人网站在线观看| 久久影院电视剧免费观看| 国产精品一线二线三线| 成年人av电影| 性做久久久久久久免费看| 中文字幕高清视频| 日韩久久久久久久久久久| 欧美疯狂做受xxxx富婆| 麻豆极品一区二区三区| 开心激情五月网| 一区二区三区四区高清精品免费观看| 国产香蕉精品视频| www国产精品av| 99视频在线观看一区三区| 在线播放91灌醉迷j高跟美女 | 粉嫩蜜臀av国产精品网站| 欧美综合一区二区| 日本不卡一区二区三区高清视频| 国产美女网站视频| 一二三四区精品视频| a毛片毛片av永久免费| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产精品视频一二三区| 精品人妻无码中文字幕18禁| 久久综合狠狠综合久久综合88 | 欧美亚洲动漫另类| 麻豆91免费观看| 色成人在线视频| 久久精品国产亚洲a| 一本大道久久a久久精二百| 日韩电影免费在线| 久久久久99精品成人片试看| 日日夜夜免费精品视频| 好吊日在线视频| 日韩综合小视频| 538任你躁在线精品视频网站| 五月天激情小说综合| 国产真实乱在线更新| 日韩高清在线电影| 色婷婷激情久久| 久久福利资源站| 欧美美女直播网站| 成人高清视频在线观看| 欧美成人猛片aaaaaaa| 99国产精品久久| 国产偷v国产偷v亚洲高清| 久久久高清视频| 自拍av一区二区三区| 四虎国产精品成人免费入口| 亚洲激情在线播放| 91制片厂在线| 另类专区欧美蜜桃臀第一页| 欧美日韩一区视频| 成人性生交大片免费看在线播放| 欧美v亚洲v综合ⅴ国产v| 日本中文字幕有码| 国产精品久久久久久久久晋中| 中文字幕在线看高清电影| 亚洲国产你懂的| 色欧美乱欧美15图片| 国产精品一二三区在线| 成人做爰www看视频软件| 国产精品久久久久aaaa樱花| 免费一级做a爰片久久毛片潮| 午夜久久久久久| 欧美午夜精品理论片a级按摩| 国产v综合v亚洲欧| 26uuu国产日韩综合| 少妇户外露出[11p]| 亚洲国产精品综合小说图片区| 国产精品免费人成网站酒店 | 91精品国产色综合久久不卡蜜臀| 99re在线精品| 中文字幕一区不卡| 日韩精品久久久久久久的张开腿让| 免费久久99精品国产| 777欧美精品| 日本在线不卡一区二区| 亚洲一线二线三线视频| 在线影视一区二区三区| 9久草视频在线视频精品| 国产精品区一区二区三| 乱老熟女一区二区三区| 国产一区二区h| 国产亚洲视频系列| 久久视频一区二区三区| 国产美女视频一区| 国产欧美一区视频| 蜜桃av免费在线观看| 国产剧情在线观看一区二区| 国产视频一区二区在线| 国产极品视频在线观看| 国产精品一区久久久久| 欧美韩国日本综合| 日韩精品一区二区亚洲av性色| 国产盗摄一区二区| 国产精品无遮挡| 日本a级片视频| 99国产精品国产精品久久| 一区二区在线电影| 欧美色偷偷大香| 日韩精品视频一区二区| 日韩国产一区二| 久久人人爽人人爽| 欧美肥妇bbwbbw| 99久久精品免费| 亚洲国产视频直播| 91精品国产免费| 亚洲精品国产91| 国产精品一区二区三区四区| 国产精品国产三级国产普通话三级| 一本色道久久综合亚洲aⅴ蜜桃| 91网站在线播放| 亚洲va在线va天堂| 26uuu欧美| 成人在线观看免费完整| 深夜福利网站在线观看| 亚洲国产精品一区二区久久| 日韩一区二区在线观看视频| 日本性高潮视频| 成人在线视频一区二区| 一区二区三区欧美在线观看| 日韩一区二区三区视频在线 | 视频一区视频二区中文字幕| 精品福利一区二区三区| 午夜黄色福利视频| 国产精品嫩草99a| 日本久久一区二区三区| 国产激情视频网站| 美女在线视频一区| 中文字幕av在线一区二区三区| 91九色最新地址| 亚洲欧美日本一区| 国产精品亚洲а∨天堂免在线| 亚洲精品v日韩精品| 欧美一卡二卡三卡| 男人在线观看视频| 9.1在线观看免费| 国产一区二区免费看| 一区二区三区美女视频| 精品乱人伦小说| 五月天丁香激情| 中出视频在线观看| 成人国产亚洲欧美成人综合网| 日韩中文字幕亚洲一区二区va在线| 国产日韩欧美综合一区| 欧美丝袜第三区| 美国精品一区二区| 精品人妻人人做人人爽夜夜爽| 国产综合一区二区| 亚洲国产日韩一级| 国产精品美女www爽爽爽| 91精品国产一区二区三区蜜臀| 久久精品在线观看视频| 精品1卡二卡三卡四卡老狼| 国产高清成人在线| 午夜私人影院久久久久| 久久精品亚洲精品国产欧美| 欧美日韩亚洲综合一区二区三区 | 久久久视频6r| 日本少妇一区二区三区| 国产一区二区三区不卡在线观看 | 久久久精品2019中文字幕之3| 欧美性一级生活| 国产精品久久国产精麻豆96堂| 天天插天天射天天干| jiyouzz国产精品久久|