shell - 基于shellscript中的时间戳合并2个排序文件(内容相似)
问题描述
我有 2 个相同的文件,内容如下:
文件1:
1,Abhi,Ban,20180921T09:09:01,EmpId1,SalaryX
4,Bbhi,Dan,20180922T09:09:03,EmpId2,SalaryY
7,Cbhi,Ean,20180923T09:09:05,EmpId3,SalaryZ
9,Dbhi,Fan,20180924T09:09:09,EmpId4,SalaryQ
文件2:
11,Ebhi,Gan,20180922T09:09:02,EmpId5,SalaryA
12,Fbhi,Han,20180923T09:09:04,EmpId6,SalaryB
3,Gbhi,Ian,20180924T09:09:06,EmpId7,SalaryC
5,Hbhi,Jan,20180925T09:09:08,EmpId8,SalaryD
我想在 Files 中附加所有 File1 的内容(基于升序的日期)
结果:
1,Abhi,Ban,20180921T09:09:01,EmpId1,SalaryX
11,Ebhi,Gan,20180922T09:09:02,EmpId5,SalaryA
4,Bbhi,Dan,20180922T09:09:03,EmpId2,SalaryY
12,Fbhi,Han,20180923T09:09:04,EmpId6,SalaryB
7,Cbhi,Ean,20180923T09:09:05,EmpId3,SalaryZ
3,Gbhi,Ian,20180924T09:09:06,EmpId7,SalaryC
9,Dbhi,Fan,20180924T09:09:09,EmpId4,SalaryQ
5,Hbhi,Jan,20180925T09:09:08,EmpId8,SalaryD
解决方案
您可以使用以下 AWK 构造来执行此操作:-
awk -F "," 'NR==FNR{print $4, $0;next} NR>FNR{print $4, $0;}' f1.txt f2.txt | sort | awk '{print $2}'
解释 :-
$4
在两个文件的每一行 ( ) 前添加日期列 ( ) 前缀$0
。
sort
它。然后print $2
是整行。
这些打印的行将按日期排序。
f1.txt
和f2.txt
是两个文件名。
推荐阅读
- android - 当我们在 Android 中进行电话号码认证时,firebase 数据库规则是什么?
- ruby-on-rails - AWS ElasticBeanstalk 多容器 Rails/Nginx/Postgres:端口号无效:“tcp://172.17.0.2:5432”
- react-native - react-router-native 是否有用于 Link 组件的 activeStyle 或 activeClass?
- ios - 在 UIGraphicsImageRenderer 中添加 UIImage
- android - 在 IONIC3 中启动屏幕后在 android 上运行卡住
- html - 如何将图像从网格容器扩展到视口边缘?
- r - dplyr::count 省略未表示的级别
- android - 无法从 Android Studio 中的 AdMop 加载广告
- python - 使用条件语句设置 python 变量
- javascript - fetch 调用给出错误