博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
awk将两个文件逐行连接
阅读量:6039 次
发布时间:2019-06-20

本文共 586 字,大约阅读时间需要 1 分钟。

将两个文档逐行连接,比如:

a文件内容是
a 1
b 2
c 3

b文件内容是

a 5
b 6

结果是

a 1 5
b 2 6
c 3

awk代码为:

awk '{a[$1]=a[$1]" "$2}END{for (j in a) print j""a[j]}' a b

说实话,这行代码相当难以理解。看完了awk的语法,也没有发现类似的用法。使用谷歌找到了一个。

{ a[$1]=a[$1]" " $2; next } means append the value of field two ($2) to an array (a) indexed by the value of field one ($1)

意思是a数组以$1为key,a[$1]的初值是空字符串,将同一个key对应的" "$2不断追加到a[$1]中。

比如:

awk '{a[$1]=a[$1]"  "$2}END{for (j in a) print a[j]}' a b

上面代码的结果是(间隔为两个空格):

1  5  2  6  3

还有一种方法

shellpaste -d' ' a b | awk '{print $1, $2, $4}'

但这种写法没有第一种好,第一种写法可以保证b文件的第一列顺序与a不同时仍然可以实现拼接。比如,当b文件内容下面这种时,结果是一样的

b 6
a 5

转载地址:http://jllhx.baihongyu.com/

你可能感兴趣的文章
走在网页游戏开发的路上(六)
查看>>
nginx 配置的server_name参数(转)
查看>>
Uva592 Island of Logic
查看>>
C++基础代码--20余种数据结构和算法的实现
查看>>
footer固定在页面底部的实现方法总结
查看>>
nginx上传文件大小
查看>>
数字通信原理笔记(一)---概述
查看>>
HDU 2243 考研路茫茫——单词情结(自动机)
查看>>
Dubbo OPS工具——dubbo-admin & dubbo-monitor
查看>>
如何将OpenCV中的Mat类绑定为OpenGL中的纹理
查看>>
CutyCapt
查看>>
Dungeon Master ZOJ 1940【优先队列+广搜】
查看>>
解决https://localhost:1158/em 页面无法打开的问题
查看>>
[Cocoa]深入浅出Cocoa之Core Data(4)- 使用绑定
查看>>
原理:什么是Quadtrees?(转)
查看>>
记:返回方法参数的值(或多个值),
查看>>
Effective C++ 的52个条款列表
查看>>
c#读取ini文件
查看>>
一阶微分方程的求解
查看>>
其它 Helper
查看>>