亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > awk實(shí)現(xiàn)Left、join查詢、去除重復(fù)值以及局部變量講解例子

awk實(shí)現(xiàn)Left、join查詢、去除重復(fù)值以及局部變量講解例子

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

最近看到論壇里面有幾個(gè)不錯(cuò)的小例子,對于學(xué)習(xí)awk還是有幫助,在這兒詳細(xì)的說一下

一、類似數(shù)據(jù)庫中的left join查詢

復(fù)制代碼 代碼如下:

[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


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

實(shí)現(xiàn)方法:

復(fù)制代碼 代碼如下:

[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

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

實(shí)現(xiàn)方法2:

復(fù)制代碼 代碼如下:

[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=","這個(gè)是設(shè)置輸出時(shí)的列分割符,$1 in a這個(gè)是b.txt文件中的第一列的值是不是在數(shù)組a的key中,這個(gè)對做程序的來說很好理解,各種語言當(dāng)中都有這樣的用法,或者函數(shù)。例如,php中有in_array函數(shù)。比較一下,方法1和方法2中的print,方法1我加了雙引號,方法2我卻沒有加,但是輸出的效果卻是一樣的。

二、去除重復(fù)的值

復(fù)制代碼 代碼如下:

[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,當(dāng)然數(shù)字也一樣;

實(shí)現(xiàn)方法1:

復(fù)制代碼 代碼如下:

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;將每一列中的二個(gè)字段放到數(shù)組中,asort(a),這個(gè)數(shù)組進(jìn)行排序,后面的代碼是將數(shù)組數(shù)據(jù)輸出來,通sort命令對輸入的數(shù)據(jù)進(jìn)行排序,相同數(shù)據(jù)會排在一起,通過uniq來進(jìn)行去除相同的列。這種方法比較有通用性,不光適合二列,三列,四列都行。不過效率差了點(diǎn)。

實(shí)現(xiàn)方法2:

復(fù)制代碼 代碼如下:

[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的二種寫法,出來的結(jié)果是一樣的,a[$0];沒有賦值也沒有報(bào)錯(cuò),為什么呢?awk在遇到這樣沒有定義的變量時(shí),會給它一個(gè)初值。if (!($2 OFS $1 in a))表示返轉(zhuǎn)字段不在數(shù)組a中,這里所說的在,表示key是不是存在,不是值。print 不寫默認(rèn)是一行。

實(shí)現(xiàn)方法3:

復(fù)制代碼 代碼如下:

[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]++),對于首次出現(xiàn)的記錄,a[$2_$1]的值是未定義的,由于后面的 ++ 是數(shù)學(xué)計(jì)算,所以a[$2_$1]會被賦值成數(shù)字0,也是由于 ++ 操作符,會先取值,再計(jì)算,從左到右 ++ 運(yùn)算符的優(yōu)先級大于!運(yùn)算符的,所以對于第一行記錄實(shí)際上是if(! 0) print $0     ! 是取反,0 是假,! 0 就是真,那么就會執(zhí)行后面的 print $0對于后面出現(xiàn)的重復(fù)記錄,a[$0] 經(jīng)過 ++ 的計(jì)算已經(jīng)變?yōu)?1、2、3 。。。而 ! 1  ! 2  ! 3 ... 都為假,不會打印。

三、awk的局部變量

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

復(fù)制代碼 代碼如下:

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

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

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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=

復(fù)制代碼 代碼如下:

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}

標(biāo)簽:朝陽 西藏 通遼 隨州 青島 南充 延邊 雅安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《awk實(shí)現(xiàn)Left、join查詢、去除重復(fù)值以及局部變量講解例子》,本文關(guān)鍵詞  awk,實(shí)現(xiàn),Left,join,查詢,去除,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《awk實(shí)現(xiàn)Left、join查詢、去除重復(fù)值以及局部變量講解例子》相關(guān)的同類信息!
  • 本頁收集關(guān)于awk實(shí)現(xiàn)Left、join查詢、去除重復(fù)值以及局部變量講解例子的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产a视频| 国产一级生活片| 欧美一级视频免费观看| 人人干人人草| 精品国产一区二区三区久| 精品久久久久久中文| 黄视频网站在线免费观看| 国产不卡高清| 精品国产一级毛片| 99色视频在线观看| 亚欧成人毛片一区二区三区四区 | 韩国三级视频网站| 久草免费在线色站| 国产一区二区精品| 午夜激情视频在线观看| 国产伦精品一区二区三区在线观看| 九九九国产| 成人免费观看视频| 国产亚洲精品成人a在线| 99久久精品国产免费| 欧美激情中文字幕一区二区| 中文字幕97| 国产成人精品综合在线| 亚洲精品久久玖玖玖玖| 欧美激情一区二区三区中文字幕| 日本伦理片网站| 久久福利影视| 国产不卡在线观看| 日韩中文字幕在线亚洲一区 | 高清一级片| 一级片片| 韩国三级视频网站| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 久久久成人网| 久久久久久久男人的天堂| 在线观看成人网| 国产91精品一区| 精品视频一区二区| 九九久久99综合一区二区| 一本高清在线| 午夜激情视频在线观看 | 欧美国产日韩一区二区三区| 精品毛片视频| 99热热久久| 日韩专区在线播放| 日韩欧美一及在线播放| 人人干人人草| 午夜家庭影院| 韩国毛片| 四虎久久影院| 日本伦理黄色大片在线观看网站| 国产一区二区精品久久| 91麻豆精品国产片在线观看| 欧美大片毛片aaa免费看| 黄视频网站免费看| 国产不卡福利| 国产一级强片在线观看| 美国一区二区三区| 99色视频在线观看| 一级女性全黄生活片免费| 高清一级毛片一本到免费观看| 欧美电影免费| 国产视频在线免费观看| 精品视频免费在线| 免费国产在线观看不卡| 日韩在线观看网站| 欧美激情一区二区三区视频| 九九久久99综合一区二区| 久久国产精品永久免费网站| 中文字幕一区二区三区精彩视频| 天堂网中文在线| 久久国产精品只做精品| 香蕉视频久久| 四虎影视久久久| 国产精品自拍亚洲| 久久99中文字幕久久| 黄视频网站在线观看| 日本免费乱理伦片在线观看2018| 国产精品免费精品自在线观看| 成人在免费观看视频国产| 精品久久久久久中文| 四虎影视久久| 日本特黄一级| 青青青草影院| 久久99中文字幕久久| 成人在免费观看视频国产| 亚洲精品中文字幕久久久久久| 91麻豆tv| 黄视频网站在线看| 日韩在线观看视频网站| 欧美另类videosbestsex | 国产成人啪精品| 国产精品自拍在线观看| 一本高清在线| 香蕉视频三级| 亚洲精品影院| 日韩免费在线| 天天做人人爱夜夜爽2020 | 国产不卡精品一区二区三区| 99久久精品费精品国产一区二区| 超级乱淫伦动漫| a级毛片免费观看网站| 国产一区二区精品| 国产一区二区精品久久91| 欧美电影免费看大全| 精品国产一区二区三区国产馆| 国产精品1024永久免费视频| 毛片高清| 尤物视频网站在线| 久久99中文字幕久久| 国产a一级| 毛片电影网| 四虎论坛| 精品视频一区二区三区免费| a级毛片免费观看网站| 国产a毛片| 日韩中文字幕在线观看视频| 韩国毛片免费| 黄视频网站在线看| 国产一区二区福利久久| 日本伦理黄色大片在线观看网站| 国产高清在线精品一区a| 黄色免费网站在线| 国产麻豆精品| 可以免费在线看黄的网站| 黄色短视频网站| 国产网站免费| 99热热久久| 尤物视频网站在线| 韩国三级视频在线观看| 在线观看成人网 | 午夜激情视频在线观看 | 免费一级生活片| 欧美国产日韩一区二区三区| 999久久66久6只有精品| 国产视频一区二区在线观看 | 精品国产亚洲一区二区三区| 日本在线www| 欧美激情一区二区三区在线| 色综合久久久久综合体桃花网| 99久久视频| 午夜在线影院| 欧美国产日韩久久久| 国产美女在线观看| 日韩男人天堂| 国产91精品一区二区| 欧美电影免费| 欧美一区二区三区在线观看| 久久精品免视看国产明星| 国产不卡高清| 日韩一级黄色| 国产一区精品| 精品视频一区二区三区| 成人免费观看男女羞羞视频| 国产亚洲免费观看| 国产伦理精品| 精品视频免费看| 精品视频在线观看一区二区三区| a级精品九九九大片免费看| 天天色色色| 91麻豆tv| 国产视频一区在线| 日本在线播放一区| 韩国三级香港三级日本三级la| 999精品视频在线| 欧美一区二区三区在线观看| 精品国产一区二区三区免费 | 国产a一级| 日韩av东京社区男人的天堂| 国产网站在线| 亚洲天堂免费观看| 欧美日本二区| 亚洲天堂在线播放| 国产网站在线| 黄视频网站在线观看| 亚洲精品中文字幕久久久久久| 天天做日日干| 深夜做爰性大片中文| 国产精品免费精品自在线观看| 亚洲第一页乱| 青青青草影院 | 国产视频久久久| 欧美一级视频高清片| 国产伦精品一区三区视频| 天天做人人爱夜夜爽2020 | 日韩在线观看视频黄| 日本免费乱人伦在线观看| 国产一区二区精品| 精品国产亚一区二区三区| 青青青草影院 | 精品国产三级a| 精品在线观看一区| 青青久久精品| 亚洲天堂免费观看| 精品视频在线看| 国产国语对白一级毛片| 深夜做爰性大片中文| 国产一区国产二区国产三区| 天天做日日干| 天天做日日爱|