将一列多个文件追加到一个输出文件中

时间:2015-06-24 18:11:36

标签: awk linux-kernel gawk

说我有三个文件

文件1

1  10.0
2  13.0
3  14.0

file2

1  14.0
2  11.0
3  12.0

file3的

1  9.0
2  11.0
3  4.0

我想将文件合并到一个输出

OUTPUTFILE

10.0 14.0 9.0
13.0 12.0 11.0
14.0 12.0 4.0

所有文件都具有相同的确切行数。每个文件的第二列都需要添加到输出文件

值需要用一个空格分隔。

我想学习如何为多个文件执行此操作,最多4个用于awk或linux终端。

5 个答案:

答案 0 :(得分:4)

鉴于你的新问题:

$ paste file1 file2 file3 | awk '{print $2,$4,$6}'
10.0 14.0 9.0
13.0 11.0 11.0
14.0 12.0 4.0

为了避免对awk部分中的字段编号进行硬编码,以便它与粘贴的任何输出一样正常工作:

$ paste file1 file2 file3 | awk '{for (i=2;i<=NF;i+=2) printf "%s%s",$i,(i<NF?OFS:ORS)}'
10.0 14.0 9.0
13.0 11.0 11.0
14.0 12.0 4.0

答案 1 :(得分:2)

Key

Join取决于索引列和间距。

join file1 file2 | awk '{print $2 $3}' > outputfile

假设所有输入文件具有相同的前缀,并且所有文件都根据索引列值(即$ 1)加入(不仅仅是按行索引)。

答案 2 :(得分:0)

如果运行linux尝试使用paste命令。

paste -d " " file1 file2  > file3

答案 3 :(得分:0)

对于文件list1.txt,list2.txt中的import Cocoa import SpriteKit let sprite = SKSpriteNode() var actionarray: [SKAction] = [] actionarray.append(SKAction.moveTo(CGPointZero, duration: NSTimeInterval(1.0))) actionarray.append(SKAction.removeFromParent()) sprite.runAction(SKAction.sequence(actionarray)) 个相同格式的文件,...

N

答案 4 :(得分:0)

使用join命令使用bash的进程替换:

join <(join file1 file2) file3 | cut -d" " -f2-
10.0 14.0 9.0
13.0 11.0 11.0
14.0 12.0 4.0

使用awk,你可以写:

awk '
    {result[FNR] = result[FNR] $2 FS} 
    END {for (i=1; i<=FNR; i++) print result[i]}
' file[123]