awk处理多个文件
来源:互联网 发布:淘宝地址怎么修改 编辑:程序博客网 时间:2024/05/22 15:50
参考:
http://cwind.blog.51cto.com/62582/685253
cat file1:
0011AAA 200.00 20050321
0012BBB 300.00 20050621
0013DDD 400.00 20050622
0014FFF 500.00 20050401
cat file2:
I0011 11111
I0012 22222
I0014 55555
I0013 66666
规则:比较 file1的1-4字符 和 file2的2-5 字符,如果相同,将file2 的第二列 与 file1 合并 file3
0011AAA 200.00 20050321 11111
0012BBB 300.00 20050621 22222
0013DDD 400.00 20050622 66666
0014FFF 500.00 20050401 55555
note:
【1】
文件1的3、4行:
I0014 55555
I0013 66666
文件2的3、4行:
I0014 55555
I0013 66666
可见,顺序并不是按每一行对应的。如果对应,可以用行号为索引,如下操作:
可惜不是,那么,难道要取第一个文件的每一行,在第二个文件中遍历一遍进行查找吗?不是的,可以用哈希。采用字段做下标,就行了!
x[sub($1,2,4)]=$2
很妙!
采用行号做下标的话:
x[FNR]=substr($1,2,4);
【2】$4=x[substr($1,2,4)];
$4之前并不存在,这里就直接赋值了,于是产生了新的字段。试了一下,用$5=x[substr($1,2,4)];也是一样的。
【3】
如果取哈希数组时,传入了不存在的下标,会发生什么》如果文件2为:
0011AAA 200.00 20050321
0012BBB 300.00 20050621
0013DDD 400.00 20050622
0014FFF 500.00 20050401
0015FFF 500.00 20050401
那么返回值$4将会是空字符串。
另外,两个文件一起处理,也可以不用NR来判断的,可以使用getline:
- awk处理多个文件
- awk处理多个文件
- awk 处理多个文件
- awk 处理多个文件
- awk处理多个文件
- awk处理多个文件
- awk处理多个文件
- awk 多文件处理
- 使用awk处理2个文件
- awk如何处理2个文件
- awk如何实现处理多个文件(awk的join实现)
- awk 多个文件合并
- awk的多文件处理
- awk的多文件处理
- 利用awk自身变量NR和FNR来处理多个文件
- 利用awk自身变量NR和FNR来处理多个文件
- 利用awk自身变量NR和FNR来处理多个文件
- 用awk解压多个文件
- Android屏幕旋转时Activity的生命周期
- __attribute__ ((packed)) 的作用
- 字节对齐问题资料小结
- C中的volatile用法
- Android图片滚动,加入自动播放功能,使用自定义属性实现,霸气十足!
- awk处理多个文件
- 栈溢出(stack overflow)的原因及解决办法
- Eclipse中如何集成JBOSS 7.0版本
- makefile编写
- 关于不能够精确的对浮点数进行运算的问题
- vs2010 安装后, LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 爱情可遇不可求
- AfxBeginThread开始一个线程出现内存泄漏
- 二维数组传参