首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将file1的每一列附加到file2的特定字段中,并生成新的输出文件?

如何将file1的每一列附加到file2的特定字段中,并生成新的输出文件?
EN

Stack Overflow用户
提问于 2012-11-06 05:30:39
回答 3查看 326关注 0票数 3

我想将文件1的每一列附加为文件2的第4列,并使用文件1中的列号或类似于输出名称的内容导出为新文件。

输入文件1和2的行数相同:

输入文件1有N列:

代码语言:javascript
复制
12 23 34  .....
33 34 23
67 09 34
45 67 34
65 76 44
64 33 96

输入文件2最初有5列

代码语言:javascript
复制
AA BB FF DD 6
AA CC HH NN 7
AA DD II RR 4
AA EE JJ PP 2
AA FF KK QQ 9
AA GG LL SS 8

例如,前3个输出文件如下所示:

输出文件1(列1):

代码语言:javascript
复制
AA BB FF 12 DD 6
AA CC HH 33 NN 7
AA DD II 67 RR 4
AA EE JJ 45 PP 2
AA FF KK 65 QQ 9
AA GG LL 64 SS 8

输出文件2(第2列):

代码语言:javascript
复制
AA BB FF 23 DD 6
AA CC HH 34 NN 7
AA DD II 09 RR 4
AA EE JJ 67 PP 2
AA FF KK 76 QQ 9
AA GG LL 33 SS 8

输出文件3(第3列):

代码语言:javascript
复制
AA BB FF 34 DD 6
AA CC HH 23 NN 7
AA DD II 34 RR 4
AA EE JJ 34 PP 2
AA FF KK 44 QQ 9
AA GG LL 96 SS 8

新文件名可以是file1、file2、file3...or column1、column2、column3....or或类似的名称。我怎样才能做到这一点呢?(用于循环、awk、粘贴等)

如有任何建议,我们将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-06 05:48:46

如果您的列是以制表符分隔的,那么您可以很容易地从cutpaste中获益

代码语言:javascript
复制
for i in {1..N} ; do  # Insert the real N here, or change to $(seq 1 $N)
    cut -f1-3 input2 | \
        paste - \
              <(cut -f$i input1) \
              <(cut -f4- input2) \
        > output$i
done
票数 3
EN

Stack Overflow用户

发布于 2012-11-06 11:01:59

此方法只处理每个文件一次,如果文件很大,这会很有帮助。但是,它确实需要将第一个文件存储在内存中:

代码语言:javascript
复制
awk '
    NR==1 {n=NF} 
    NR==FNR {
        for (i=1; i<=n; i++) 
            file1[i, FNR]=$i
        next
    }
    {
        for (i=1; i<=n; i++) {
            filename = "merged" i
            print $1, $2, $3, file1[i, FNR], $4, $5 >> filename
        }
    }
' file1 file2
票数 1
EN

Stack Overflow用户

发布于 2012-11-06 21:44:45

这样的代码就是您所需要的:

代码语言:javascript
复制
awk '
NR==FNR { hd=$1" "$2" "$3"; tl=$4" "$5; next }
{  for (i=1;i<=NF;i++) {
      print hd, $i, tl > "file" i
   }
}
' file2 file1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13240707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档