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

  免費注冊 查看新帖 |

Chinaunix

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

[文本處理] 多文件第一列相同,第二列合并成一行 [復制鏈接]

論壇徽章:
4
程序設計版塊每日發(fā)帖之星
日期:2015-10-14 06:20:00每日論壇發(fā)貼之星
日期:2015-10-14 06:20:00程序設計版塊每日發(fā)帖之星
日期:2016-05-02 06:20:00程序設計版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-11-28 18:17 |只看該作者 |倒序瀏覽
20可用積分
a.txt
  1. ATT 1.1
  2. CTG 1.2
  3. ATG 1.3
復制代碼
b.txt
  1. ATT 2.3
  2. CTG 2.1
  3. ATG 2.0
  4. ACC 1.0
復制代碼
c.txt
  1. ATT 2.3
  2. CTG 2.1
  3. ATG 2.1
  4. ABC 3.0
復制代碼
類似的文件有N個。注意ACC 1.0 在 a.txt ,c.txt 沒出現(xiàn)則是0
結(jié)果文件是
  1. Name a.txt b.txt c.txt
  2. ATT 1.1 2.3 2.3
  3. CTG 1.2 2.1 2.1
  4. ATG 1.3 2.0 2.1
  5. ACC 0 1.0 0
  6. ABC 0 0 3.0
復制代碼
希望命令。。我指定兩個文件,則比較兩個,指定3個,則比較3個,指定四個則比較4個。python,awk 語言不限。。。。

最佳答案

查看完整內(nèi)容

回復 1# mswsg [ ]python2 a.txt b.txtpython2 a.txt b.txt c.txtpython2 a.txt b.txt c.txt d.txt ...

論壇徽章:
26
2015亞冠之胡齊斯坦鋼鐵
日期:2015-06-25 21:40:202015亞冠之柏斯波利斯
日期:2015-08-31 17:03:192015亞冠之柏斯波利斯
日期:2015-11-07 13:10:00程序設計版塊每日發(fā)帖之星
日期:2015-11-10 06:20:00每日論壇發(fā)貼之星
日期:2015-11-10 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-11-26 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-12-02 06:20:00黃金圣斗士
日期:2015-12-07 17:57:4615-16賽季CBA聯(lián)賽之天津
日期:2015-12-23 18:34:14程序設計版塊每日發(fā)帖之星
日期:2016-01-02 06:20:00程序設計版塊每日發(fā)帖之星
日期:2016-01-06 06:20:00每日論壇發(fā)貼之星
日期:2016-01-06 06:20:00
2 [報告]
發(fā)表于 2015-11-28 18:17 |只看該作者
本帖最后由 substr函數(shù) 于 2015-11-29 15:54 編輯

回復 1# mswsg

[   ]
python2 a.txt b.txt
python2 a.txt b.txt c.txt
python2 a.txt b.txt c.txt d.txt ...
  1. #!/usr/bin/python2
  2. # coding: utf-8

  3. import sys

  4. KEY = sys.argv[1:]
  5. DIC = {}

  6. for F in KEY:
  7.     for L in open(F):
  8.         k, v = L.split()
  9.         DIC.setdefault(k, {})[F] = v

  10. print 'name\t', '\t'.join(KEY)

  11. for k, v in DIC.items():
  12.     print k, '\t', '\t'.join(v[i] if i in v else '0' for i in KEY)

復制代碼

評分

參與人數(shù) 1信譽積分 +50 收起 理由
mswsg + 50 很給力!

查看全部評分

論壇徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亞冠之浦和紅鉆
日期:2015-06-23 19:10:532015亞冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16賽季CBA聯(lián)賽之山東
日期:2016-01-31 18:25:0515-16賽季CBA聯(lián)賽之四川
日期:2016-02-16 16:08:30程序設計版塊每日發(fā)帖之星
日期:2016-06-29 06:20:002017金雞報曉
日期:2017-01-10 15:19:5615-16賽季CBA聯(lián)賽之佛山
日期:2017-02-27 20:41:19
3 [報告]
發(fā)表于 2015-11-28 18:59 |只看該作者

  1. awk 'FNR==1{f[fi++]=FILENAME}
  2. !cl[$1]++{c[ci++]=$1}
  3. {d[FILENAME,$1]=$2}
  4. END{
  5. printf "Name\t"
  6. for(j=0;j<fi;j++) printf f[j]"\t"
  7. print ""
  8. for(i=0;i<ci;i++){
  9. printf c[i]"\t"
  10. for(j=0;j<fi;j++) printf  d[f[j],c[i]]+0"\t"
  11. print ""
  12. }
  13. }' filea fileb filec
復制代碼

評分

參與人數(shù) 1信譽積分 +10 收起 理由
mswsg + 10 贊一個!

查看全部評分

論壇徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亞冠之浦和紅鉆
日期:2015-06-23 19:10:532015亞冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16賽季CBA聯(lián)賽之山東
日期:2016-01-31 18:25:0515-16賽季CBA聯(lián)賽之四川
日期:2016-02-16 16:08:30程序設計版塊每日發(fā)帖之星
日期:2016-06-29 06:20:002017金雞報曉
日期:2017-01-10 15:19:5615-16賽季CBA聯(lián)賽之佛山
日期:2017-02-27 20:41:19
4 [報告]
發(fā)表于 2015-11-28 19:00 |只看該作者
http://www.72891.cn/thread-4162357-1-1.html

大神們給的這些例子一點幫助沒有?

論壇徽章:
54
2015亞冠之德黑蘭石油
日期:2015-07-07 13:00:1615-16賽季CBA聯(lián)賽之深圳
日期:2016-03-31 09:03:5415-16賽季CBA聯(lián)賽之遼寧
日期:2016-05-09 20:38:15程序設計版塊每日發(fā)帖之星
日期:2016-05-12 06:20:0015-16賽季CBA聯(lián)賽之四川
日期:2016-05-13 15:19:4715-16賽季CBA聯(lián)賽之福建
日期:2016-05-15 20:24:34每日論壇發(fā)貼之星
日期:2016-05-16 06:20:0015-16賽季CBA聯(lián)賽之吉林
日期:2016-05-26 11:49:4715-16賽季CBA聯(lián)賽之廣東
日期:2016-05-26 13:49:18極客徽章
日期:2016-12-07 14:05:2315-16賽季CBA聯(lián)賽之廣夏
日期:2016-12-20 17:33:532017金雞報曉
日期:2017-01-10 15:19:56
5 [報告]
發(fā)表于 2015-11-28 19:43 |只看該作者
本帖最后由 haooooaaa 于 2015-11-28 19:45 編輯
  1. awk -vn="name" 'function w(m,p){while(split(a[m],t)!=b+1)sub(p," 0&",a[m])}FNR<2{n=n" "FILENAME;++b}{a[$1]=a[$1]?a[$1]" "$2:$0;w($1," [^ ]*$")}END{print n;for(i in a){w(i,"$");print a[i]}}' a b c
  2. name a b c
  3. ABC 0 0 3.0
  4. ACC 0 1.0 0
  5. CTG 1.2 2.1 2.1
  6. ATG 1.3 2.0 2.1
  7. ATT 1.1 2.3 2.3
復制代碼

評分

參與人數(shù) 1信譽積分 +10 收起 理由
mswsg + 10 贊一個!

查看全部評分

論壇徽章:
12
IT運維版塊每日發(fā)帖之星
日期:2015-11-17 06:20:00程序設計版塊每日發(fā)帖之星
日期:2016-01-19 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-01-17 15:31:3915-16賽季CBA聯(lián)賽之上海
日期:2016-01-16 15:44:3015-16賽季CBA聯(lián)賽之浙江
日期:2016-01-15 20:38:1815-16賽季CBA聯(lián)賽之北京
日期:2016-01-09 14:30:15CU十四周年紀念徽章
日期:2016-01-07 12:31:5115-16賽季CBA聯(lián)賽之四川
日期:2016-01-01 11:49:1515-16賽季CBA聯(lián)賽之深圳
日期:2015-12-24 14:23:4115-16賽季CBA聯(lián)賽之山西
日期:2015-12-15 16:22:31技術圖書徽章
日期:2015-12-10 17:41:0015-16賽季CBA聯(lián)賽之北控
日期:2016-02-03 10:03:24
6 [報告]
發(fā)表于 2015-11-28 22:19 |只看該作者
  1. [root@test]# awk '{if(FNR==1){t=t?t" "FILENAME:FILENAME};a[$1];b[$1" "FILENAME]=$2}END{print "Name "t;for(i in a){s="";for(j=1;j<=split(t,c," ");j++){s=b[i" "c[j]]?s" "b[i" "c[j]]:s" "0};print i" "s}}' a.txt b.txt c.txt
  2. Name a.txt b.txt c.txt
  3. CTG  1.2 2.1 2.1
  4. ABC  0 0 3.0
  5. ACC  0 1.0 0
  6. ATG  1.3 2.0 2.1
  7. ATT  1.1 2.3 2.3
復制代碼

評分

參與人數(shù) 1信譽積分 +15 收起 理由
mswsg + 15

查看全部評分

論壇徽章:
16
CU十二周年紀念徽章
日期:2013-10-24 15:41:3415-16賽季CBA聯(lián)賽之廣東
日期:2015-12-23 21:21:55青銅圣斗士
日期:2015-12-05 10:35:30黃金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日論壇發(fā)貼之星
日期:2015-11-18 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-11-18 06:20:002015亞冠之城南
日期:2015-11-10 19:10:492015亞冠之薩濟拖拉機
日期:2015-10-28 18:47:282015亞冠之柏太陽神
日期:2015-08-30 17:21:492015亞冠之山東魯能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
7 [報告]
發(fā)表于 2015-11-29 20:31 |只看該作者
本帖最后由 tc1989tc 于 2015-11-29 20:38 編輯
  1. #!/bin/perl -w
  2. use strict;

  3. package T;

  4. sub new {
  5.         my $class = shift;
  6.         my $self = {};
  7.         ${$self}{'allFiles'} = shift;
  8.         #print "allfiles: ", ${$self{'allFiles'}}[0];
  9.         return bless $self, $class;
  10. }

  11. sub load {
  12.         my $self = shift;
  13.        
  14.         # load txt to hash, hash key is file names
  15.         for my $file (@{${$self}{'allFiles'}}) {
  16.                 #print "file: ", $file, " \n";
  17.                 open(my $fh,  $file) or die "open file fail\n";
  18.                 my %fileHash;
  19.                 while (<$fh>) {
  20.                         chomp ;
  21.                         (my $k, my $v) = split;
  22.                         $fileHash{$k} = $v;
  23.                         #print $k,$v;
  24.                 }
  25.                           close $fh;
  26.                 ${$self}{$file} = \%fileHash;
  27.         }
  28. }

  29. sub uniqkey {
  30.         my $self = shift;
  31.        
  32.         my @allkeys;
  33.         for my $file (@{${$self}{'allFiles'}}) {
  34.                 my @lists = keys %{${$self}{$file}};
  35.                 push @allkeys, @lists;
  36.         }
  37.         my %hashkeys;
  38.         %hashkeys = map {$_ => 1} @allkeys;
  39.        
  40.         # store keys
  41.         ${$self}{'filekeys'} = [keys %hashkeys];
  42. }

  43. sub processfiles {
  44.         my $self = shift;
  45.         ${$self}{'result'} = {};

  46.         # foreach keys
  47.         for my $key (@{${$self}{'filekeys'}}) {
  48.                 my $strs= $key;

  49.                 # Check if exist in all files
  50.                 for my $file (@{${$self}{'allFiles'}}) {
  51.                         if (defined(${${$self}{$file}}{$key})) {
  52.                                 $strs = join("\t",$strs, ${${$self}{$file}}{$key});       
  53.                         } else {
  54.                                 $strs = join("\t",$strs, 0);       
  55.                         }
  56.                 }
  57.                 #print $strs, "\n";
  58.                
  59.                 ${${$self}{'result'}}{$key} = $strs;
  60.         }
  61.         ${$self}{'TITLE'} = join("\t", 'NAME', @{${$self}{'allFiles'}});
  62. }

  63. sub printresult {
  64.         my $self = shift;
  65.         print ${$self}{'TITLE'}, "\n";
  66.        
  67.         for (keys %{${$self}{'result'}}) {
  68.                 print ${${$self}{'result'}}{$_}, "\n";
  69.         }
  70. }
  71. my $files=['a.txt', 'b.txt', 'c.txt'];
  72. my $a = T->new($files);
  73. $a->load();
  74. $a->uniqkey();
  75. $a->processfiles();
  76. $a->printresult();
復制代碼
./test.pl
NAME        a.txt        b.txt        c.txt
ABC        0        0        3.0
ACC        0        1.0        0
ATT        1.1        2.3        2.3
CTG        1.2        2.1        2.1
ATG        1.3        2.0        2.1

評分

參與人數(shù) 1信譽積分 +50 收起 理由
mswsg + 50 贊一個!

查看全部評分

論壇徽章:
3
程序設計版塊每日發(fā)帖之星
日期:2015-12-21 06:20:00每日論壇發(fā)貼之星
日期:2015-12-21 06:20:00程序設計版塊每周發(fā)帖之星
日期:2016-02-03 16:54:19
8 [報告]
發(fā)表于 2015-12-18 15:08 |只看該作者
回復 6# substr函數(shù)


請問如何在linux下執(zhí)行這個python腳本?謝謝

論壇徽章:
26
2015亞冠之胡齊斯坦鋼鐵
日期:2015-06-25 21:40:202015亞冠之柏斯波利斯
日期:2015-08-31 17:03:192015亞冠之柏斯波利斯
日期:2015-11-07 13:10:00程序設計版塊每日發(fā)帖之星
日期:2015-11-10 06:20:00每日論壇發(fā)貼之星
日期:2015-11-10 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-11-26 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-12-02 06:20:00黃金圣斗士
日期:2015-12-07 17:57:4615-16賽季CBA聯(lián)賽之天津
日期:2015-12-23 18:34:14程序設計版塊每日發(fā)帖之星
日期:2016-01-02 06:20:00程序設計版塊每日發(fā)帖之星
日期:2016-01-06 06:20:00每日論壇發(fā)貼之星
日期:2016-01-06 06:20:00
9 [報告]
發(fā)表于 2015-12-18 15:21 |只看該作者
回復 8# drdachen


    python2 thisscript.py a.txt b.txt c.txt

論壇徽章:
3
程序設計版塊每日發(fā)帖之星
日期:2015-12-21 06:20:00每日論壇發(fā)貼之星
日期:2015-12-21 06:20:00程序設計版塊每周發(fā)帖之星
日期:2016-02-03 16:54:19
10 [報告]
發(fā)表于 2015-12-18 17:34 |只看該作者
回復 9# substr函數(shù)

但是報錯,是怎么回事呢?

代碼如下:

da@da:~/try$ cat a.txt
aa 11
bb 22
cc 33
dd 44
da@da:~/try$ cat b.txt
aa 111
bb 222
cc 333
da@da:~/try$ cat c.txt
aa 1111
bb 2222
cc 3333

da@da:~/try$ cat 1.py
#!/usr/bin/python2
# coding: utf-8

import sys

KEY = sys.argv[1:]
DIC = {}

for F in KEY:
    for L in open(F):
        k, v = L.split()
        DIC.setdefault(k, {})[F] = v

print 'name\t', '\t'.join(KEY)

for k, v in DIC.items():
    print k, '\t', '\t'.join(v if i in v else '0' for i in KEY)
da@da:~/try$ python2 1.py a.txt b.txt c.txt
Traceback (most recent call last):
  File "1.py", line 11, in <module>
    k, v = L.split()
ValueError: need more than 0 values to unpack

   
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP