awk 合并文件

问题描述:两个文件a.dat, b.dat

a.dat

0    100

1    99

2    93

3    90

...

b.dat

0   0

1   3

2   0

3   2

....

如果两个文件中第一列的元素相同,则相对应行的第二列元素相加,即

0    100

1    102

2    93

3    92

...

Awk代码  

  1. awk ‘FNR==NR{dx[$1]=$2; next}{print $1, dx[$1], $2, dx[$1]+$2}‘ a.dat b.dat > merge.dat

说明

Awk代码  

  1. NR == FNR

只有当处理第一个文件a.dat时,这个值才返回true,所以相应的处理是把第二列的数赋值给数组dx;如果判断值为False,即所处理的文件是b.dat,则输出第二个文件的第一列,第一个文件的相应的第二列,第二个文件的第二列和两个文件第二列的和。

(注:已知所处理的所有的文件都是等长度的)

转:http://rachzhang.iteye.com/blog/900811

时间: 2024-08-02 16:06:48

awk 合并文件的相关文章

awk合并两个文件

awk 合并两个文件: awk 'NR==FNR{a[i]=$0;i++}NR>FNR{print a[j]"    "$0;j++}' template interface > interface_last template: Template Log tqt_url-response-code Template Log tqt_url-response-code Template Log tqt_url-response-code Template Log tqt_ur

Linux:不同文件相同列字符合并文件(awk函数)

存在file1.txt,其内容如下: H aa 0 0 1 -9 H bb 0 0 2 -9 H cc 0 0 2 -9 存在file2.txt,其内容如下: H aa 0 0 0 -9 asd qwe H bb 0 0 0 -9 fgh rty H cc 0 0 0 -9 jkl uio 现希望根据file1和file2相同的列字符合并文件,要求如下:1.如果两个文件的第二列相同,则将file2的第三列.第四列.第五列.第六列修改为file1对应的第三列.第四列.第五列.第六列内容:2.新文件

Linux下分割、合并文件——dd和cat

功能说明:读取,转换并输出数据. 语 法:dd [bs=<字节数>][cbs=<字节数>][conv=<关键字>][count=<区块数>][ibs=<字节数>][if=<文件>][obs=<字节数>][of=<文件>][seek=<区块数>][skip=<区块数>][–help][–version] 补充说明:dd可从标准输入或文件读取数据,依指定的格式来转换数据,再输出到文件,设备或

RandomAccessFile拆分合并文件

import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; import java.io.SequenceInputStream; import java.util.Vector; public class RandonFileAccessTest { public static void main(String[]

requirejs实验002. r.js合并文件. 初体验.

requirejs的官网上有介绍如何使用r.js合并,压缩文件的.http://requirejs.org/docs/optimization.html https://github.com/jrburke/r.js/blob/master/build/example.build.js 这里罗列了所有的优化参数. 我是在win7上使用r.js的. 安装使用的是npm ->  npm install -g requirejs  安装在全局,更合适,方便在任何地方使用. windows上使用r.js

使用awk处理文件名字

在我的doc目录下有一些文件 hbase_old.xml hadoop_old.xml 等 我想使用awk把文件中间的_old去掉 ls |awk -F '_old' '{print "mv  "$0" "$1$2}'|bash 这样就把文件变成hbase.xml 了hadoop.xml了

IO流--切割 合并文件

import java.io.*; import java.util.*; public class io { public static void main(String[] args)throws IOException { splitFile(); merge(); } //切割文件 public static void splitFile() throws IOException { FileInputStream fis = new FileInputStream("e:\\4.jpg

JAVA之IO技术 合并文件--有bug哦

/*将三个文本文件的内容copy到一个文件中. * 基本思路:通过续写的方式. * * JAVA之IO技术中提供了一个可串联的字节输入流对象. * * 合并流对象 * SequenceInputStream: * SequenceInputStream 表示其他输入流的逻辑串联. * 它从输入流的有序集合开始,并从第一个输入流开始读取, * 直到到达文件末尾,接着从第二个输入流读取,依次类推, * 直到到达包含的最后一个输入流的文件末尾为止. * 有两个构造函数: * SequenceInput

根据给定分割文件的分数进行进行分割与使用配置文件合并文件

package cn.mytext.ref; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; im