合并多个文件的同行数据

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

猜你喜欢

转载自www.cnblogs.com/xhnxhnu/p/9783368.html