亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 3640 | 回復(fù): 19
打印 上一主題 下一主題

[文本處理] awk問題請教:2個文件的比較 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-01-16 11:46 |只看該作者 |倒序瀏覽
本帖最后由 nxzwt 于 2013-01-16 19:24 編輯

有2個文件a和b
a的內(nèi)容如下,有100多萬行
1.1.1.10     20
1.1.1.34     25
2.2.2.100   30
3.3.3.20     40
b的內(nèi)容如下,有1萬多行
1.1.1.0    1.1.1.31     財務(wù)一部
1.1.1.32   1.1.1.63    財務(wù)二部
2.2.2.0    2.2.2.127   技術(shù)部
3.3.3.0    3.3.3.63     人事部

要求從a里面讀出數(shù)據(jù),和b比較后輸出成
1.1.1.10    20    財務(wù)一部
1.1.1.34    25    財務(wù)二部
2.2.2.100   30   技術(shù)部
3.3.3.20    40    人事部

這個用awk該怎么做?請高手指點,謝謝。

論壇徽章:
2
射手座
日期:2014-10-10 15:59:4715-16賽季CBA聯(lián)賽之上海
日期:2016-03-03 10:27:14
2 [報告]
發(fā)表于 2013-01-16 13:25 |只看該作者
回復(fù) 1# nxzwt

  1. awk 'NR==FNR{b[a[match($1,/(.*)\.[^.]+$/,a)]]=$0;next}{print b[c[match($1,/(.*)\.[^.]+/,c)]],$NF}' a b
復(fù)制代碼

論壇徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年紀(jì)念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役紀(jì)念章
日期:2022-04-24 14:33:24
3 [報告]
發(fā)表于 2013-01-16 13:27 |只看該作者
  1. awk -F '[ .]+' 'NR==FNR{a[$1"."$2"."$3]=$9}NR>FNR{for(i in a)if($1"."$2"."$3==i)print $0,a[i]}' b a
復(fù)制代碼

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設(shè)計版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
4 [報告]
發(fā)表于 2013-01-16 14:18 |只看該作者
@yinyuemi@Shell_HAT兩位是否忽略了范圍?比如文件a的第一行,1.1.1.10中的第4位10必須在文件b的范圍0-31才能對應(yīng)財務(wù)部。

論壇徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年紀(jì)念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役紀(jì)念章
日期:2022-04-24 14:33:24
5 [報告]
發(fā)表于 2013-01-16 14:31 |只看該作者
回復(fù) 4# yestreenstars


    看樓主怎么回復(fù)吧

論壇徽章:
0
6 [報告]
發(fā)表于 2013-01-16 15:17 |只看該作者
本帖最后由 nxzwt 于 2013-01-16 15:19 編輯

非常感謝幾位關(guān)注!

情況是:a文件有100多萬行,記錄了IP地址和某個統(tǒng)計次數(shù),比對是把a里面的IP地址和b記錄的IP地址段結(jié)果進行比對,要求核實a里面的ip地址落到b記錄的哪個部門,確實需要10在0-31之間這個情況。

論壇徽章:
0
7 [報告]
發(fā)表于 2013-01-16 15:24 |只看該作者
測試了2位大俠的代碼,不知為何不能產(chǎn)生正確的結(jié)果。

論壇徽章:
0
8 [報告]
發(fā)表于 2013-01-16 17:58 |只看該作者
回復(fù) 7# nxzwt


    文件b有多少行

論壇徽章:
0
9 [報告]
發(fā)表于 2013-01-16 18:09 |只看該作者
本帖最后由 07101060407 于 2013-01-16 18:19 編輯

awk 'BEGIN{FS="[.]|[ ]+|\t+"}NR==FNR{min[NR]="0."$1$2$3$4;max[NR]="0."$5$6$7$8;name[NR]=$9;l=(NR>l)?NR:l}NR!=FNR{a="0."$1$2$3$4;for(i=1;i<=l;i++){if(a<=max&&a>=min)print $0,name}}' b a


我這個有問題
0.0.0.10和0.0.0.1是相等的

論壇徽章:
0
10 [報告]
發(fā)表于 2013-01-16 19:23 |只看該作者
文件b有1萬行
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP