合并多个文件的同行数据

employee文件中记录了工号和姓名

employee.txt:
100 Jason Smith 
200 John Doe 
300 Sanjay Gupta 
400 Ashok Sharma

bonus文件中记录工号和工资

bonus.txt:
100 $5,000 
200 $500 
300 $3,000 
400 $1,250 

要求把两个文件合并并输出如下

处理结果:

400 ashok sharma $1,250
100 jason smith  $5,000
200 john doe  $500
300 sanjay gupta  $3,000

参考答案:

方案一:

paste employee.txt bonus.txt | awk '{print $1,$2,$3,$5}' |tr '[:upper:]' '[:lower:]' |  sort -k 2

方案二:

paste employee.txt bonus.txt | awk '{print $1,$2,$3,$5}' |awk '{print tolower($0)}' |  sort -k 2

aste命令可以使用-d指定合并时加入的符号。比如paste -d : employee bonus则结果变成类似100 Jason Smith :100 $5,000 等。默认合并符号为tab符号,更多paste命令请参照http://snailwarrior.blog.51cto.com/680306/144462/

tr命令用于将字符串中所有大写字符转换为小写字符,awk的tolower和toupper函数也是不错的选择

sort命令对字符排序。sort -k 2表示按文件第2个域排序,这里第二个域为姓名,所以是按姓名升序排序。如果要降序排列,则要用sort -k 2r。更多sort命令参见http://www.360doc.com/content/10/0925/15/1107705_56263541.shtml

本文出处:https://blog.csdn.net/sgbfblog/article/details/7814302

转载于:https://www.cnblogs.com/xhnxhnu/p/9783368.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值