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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 4013 | 回復(fù): 19
打印 上一主題 下一主題

[文本處理] 兩個(gè)文件的連接處理 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-09-21 11:22 |只看該作者 |倒序?yàn)g覽
本帖最后由 yujianshengahtz 于 2015-09-21 15:20 編輯

有兩個(gè)文件test1和test2,test2中內(nèi)容包含test1內(nèi)容,要根據(jù)test1的經(jīng)緯度值提取出對(duì)應(yīng)的test2中的內(nèi)容,
嘗試過(guò)用join,但沒(méi)成功,請(qǐng)問(wèn)有什么辦法可以解決這個(gè)問(wèn)題嗎?

cat test1:
103.75  29.57
104.73  31.44        
105.12  29.62
103.76  30.91
103.01  29.98
106.37  30.11
104.13  30.20
103.31  30.35
105.23  32.57

cat test2:
103.75        29.57        0.0035
104.55        31.01        0.1128
104.06        30.64        0.0755
104.73        31.44        0.1693
105.12        29.62        0.0123
103.76        30.91        0.2355
103.01        29.98        -0.0091
104.55        30.39        0.0382
106.37        30.11        0.0126
104.43        29.46        0.0047
104.13        30.2              0.023
103.31        30.35        -0.0123
105.35        29.53        0.0101
105.23        32.57        -0.1335
104.83        32.18        0.4361
104.44        31.8           0.8829
104.19        31.35        0.4643
104.44        31.16        0.1558
103.69        31.06        0.5268
103.14        31.01        -0.5298
102.31        31.71        -0.1233
104.25        31.51        0.5495
103.58        30.87        0.0699
104.69        32.36        -0.5133
103.64        30.62        0.0147
105.23        32.57        -0.1335

希望join后是這樣的:
103.75        29.57        0.0035
104.73        31.44        0.1693
105.12        29.62        0.0123
103.76        30.91        0.2355
103.01        29.98        -0.0091
106.37        30.11        0.0126
104.13        30.2              0.023
103.31        30.35        -0.0123
105.23        32.57        -0.1335

論壇徽章:
3
酉雞
日期:2014-04-23 17:17:56丑牛
日期:2014-05-08 11:41:302015亞冠之德黑蘭石油
日期:2015-08-03 11:14:27
2 [報(bào)告]
發(fā)表于 2015-09-21 11:56 |只看該作者
本帖最后由 jeffreyst 于 2015-09-21 15:29 編輯

樓主的需求應(yīng)該是查找文件2中匹配文件1 的行吧,
如果是這樣grep -f 1 2,是不是就可以了
----------------------------------------------------------上面這個(gè)grep不行,請(qǐng)忽略
awk '{if(NR==FNR){a[$1,$2]=$0}else{b[$1,$2]=$0}}END{for(i in a){if(i in b){print b}}}' 1 2
103.31        30.35        -0.0123
103.76        30.91        0.2355
103.01        29.98        -0.0091
105.12        29.62        0.0123
103.75        29.57        0.0035
106.37        30.11        0.0126
105.23        32.57        -0.1335
104.73        31.44        0.1693
試試這個(gè),看結(jié)果對(duì)不

論壇徽章:
3
水瓶座
日期:2014-03-25 17:08:042015亞冠之塔什干棉農(nóng)
日期:2015-08-10 10:45:122015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-13 16:05:24
3 [報(bào)告]
發(fā)表于 2015-09-21 12:16 |只看該作者
  1. [nick@Nick_OpenClient test]$ awk '{if(NR!=FNR){a[$1,$2]=$3}else{b[$1,$2]=$1" "$2}}END{for(i in b)print b[i],a[i]}' a1 a2
  2. 104.13 30.20 0.023
  3. 105.23 32.57 -0.1335
  4. 103.31 30.35 -0.0123
  5. 103.01 29.98 -0.0091
  6. 104.73 31.44 0.1693
  7. 106.37 30.11 0.0126
  8. 105.12 29.62 0.0123
  9. 103.76 30.91 0.2355
  10. 103.75 29.57 0.0035
復(fù)制代碼
這樣可以,順便解釋一下,使用NR!=FNR是表示處理第二個(gè)文件,可以看到后面跟著的是a[$1,$2]=$3,就是搞了以$1,$2為下標(biāo)的數(shù)組,然后對(duì)應(yīng)的值為$3,后面else的意思是在處理第一個(gè)文件的時(shí)候,也是一個(gè)數(shù)組,同樣以$1,$2為下標(biāo),但是值就不同了,因?yàn)槲覀円蛴〉慕Y(jié)果是$1 $2 $3, 所以就將第二個(gè)數(shù)列的值為$1" "$2。然后對(duì)第二個(gè)數(shù)列的下標(biāo)遍歷,打印出來(lái)就是了

但是處理的過(guò)程中我發(fā)現(xiàn)個(gè)問(wèn)題,有一行104.13 30.2這個(gè)在第一個(gè)文件里是30.20但是在第二個(gè)文件里30.2,在匹配的過(guò)程中這個(gè)是不會(huì)匹配的,所以文件的內(nèi)容最好一致,不知道有沒(méi)有什么辦法可以統(tǒng)一一下,請(qǐng)高手指點(diǎn)

論壇徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉雞
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥豬
日期:2014-04-22 16:13:09獅子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53處女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
4 [報(bào)告]
發(fā)表于 2015-09-21 12:25 |只看該作者
回復(fù) 1# yujianshengahtz


awk 'NR==FNR{a[$1,$2];next} ($1,$2) in a' test1 test2
103.75        29.57        0.0035
104.73        31.44        0.1693
105.12        29.62        0.0123
103.76        30.91        0.2355
103.01        29.98        -0.0091
106.37        30.11        0.0126
103.31        30.35        -0.0123
105.23        32.57        -0.1335
105.23        32.57        -0.1335  

論壇徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉雞
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥豬
日期:2014-04-22 16:13:09獅子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53處女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
5 [報(bào)告]
發(fā)表于 2015-09-21 12:26 |只看該作者
回復(fù) 2# jeffreyst

文件1 2兩列間的空格數(shù)不一樣得不到正確的結(jié)果的.

   

論壇徽章:
3
水瓶座
日期:2014-03-25 17:08:042015亞冠之塔什干棉農(nóng)
日期:2015-08-10 10:45:122015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-13 16:05:24
6 [報(bào)告]
發(fā)表于 2015-09-21 12:40 |只看該作者
回復(fù) 5# Herowinter


    請(qǐng)問(wèn)awk默認(rèn)不是將連續(xù)空格作為分隔符么?為什么空格不一樣會(huì)識(shí)別不出?

論壇徽章:
145
技術(shù)圖書(shū)徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書(shū)徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
7 [報(bào)告]
發(fā)表于 2015-09-21 13:09 |只看該作者
@Herowinter @su8610 @yujianshengahtz

>> ..有一行104.13 30.2這個(gè)在第一個(gè)文件里是30.20但是在第二個(gè)文件里30.2,在匹配的過(guò)程中這個(gè)是不會(huì)匹配的...

$ awk 'function N(num){return(sprintf("%.2f",num))}FNR==NR{a[N($1),N($2)]=$3;next}{printf("%s %s %8.4f\n",$1,$2,a[N($1),N($2)])}' test2 test1
103.75 29.57   0.0035
104.73 31.44   0.1693
105.12 29.62   0.0123
103.76 30.91   0.2355
103.01 29.98  -0.0091
106.37 30.11   0.0126
104.13 30.20   0.0230
103.31 30.35  -0.0123
105.23 32.57  -0.1335

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2015-09-21 14:44 |只看該作者
直接grep -f好像不可以吧 我試了沒(méi)反應(yīng)


   

論壇徽章:
3
酉雞
日期:2014-04-23 17:17:56丑牛
日期:2014-05-08 11:41:302015亞冠之德黑蘭石油
日期:2015-08-03 11:14:27
9 [報(bào)告]
發(fā)表于 2015-09-21 15:00 |只看該作者
回復(fù) 4# Herowinter


    對(duì)對(duì),我忽略這個(gè)了,哈哈,多謝提醒!

論壇徽章:
3
水瓶座
日期:2014-03-25 17:08:042015亞冠之塔什干棉農(nóng)
日期:2015-08-10 10:45:122015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-13 16:05:24
10 [報(bào)告]
發(fā)表于 2015-09-21 15:00 |只看該作者
回復(fù) 7# jason680


    謝謝,學(xué)習(xí)了
您需要登錄后才可以回帖 登錄 | 注冊(cè)

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP