如何附加&;使用shell脚本将多个文件中的多组行排序到结果文件?

如何附加&;使用shell脚本将多个文件中的多组行排序到结果文件?,shell,sorting,logging,trim,Shell,Sorting,Logging,Trim,我有多个日志文件,格式如下- A.txt 18-05-23 11:28:25.939 ##Start 18-05-23 11:28:25.940 Unique ID - ABC123 18-05-23 11:28:25.941 ##End 18-05-23 11:28:25.942 ##Start 18-05-23 11:28:25.943 Unique ID - PQR123 18-05-23 11:28:25.944 ##End 18-05-23 11:28:25.945 ##Start 1

我有多个日志文件,格式如下-

A.txt

18-05-23 11:28:25.939 ##Start
18-05-23 11:28:25.940 Unique ID - ABC123
18-05-23 11:28:25.941 ##End
18-05-23 11:28:25.942 ##Start
18-05-23 11:28:25.943 Unique ID - PQR123
18-05-23 11:28:25.944 ##End
18-05-23 11:28:25.945 ##Start
18-05-23 11:28:25.946 Unique ID - MNO123
18-05-23 11:28:25.947 ##End
18-05-23 11:28:25.949 ##Start
18-05-23 11:28:25.950 Unique ID - ABC123
18-05-23 11:28:25.951 ##End
18-05-23 11:28:25.952 ##Start
18-05-23 11:28:25.953 Unique ID - PQR123
18-05-23 11:28:25.954 ##End
18-05-23 11:28:25.955 ##Start
18-05-23 11:28:25.956 Unique ID - MNO123
18-05-23 11:28:25.947 ##End
18-05-23 11:28:25.939 ##Start
18-05-23 11:28:25.940 Unique ID - ABC123
18-05-23 11:28:25.941 ##End
18-05-23 11:28:25.949 ##Start
18-05-23 11:28:25.950 Unique ID - ABC123
18-05-23 11:28:25.951 ##End
B.txt

18-05-23 11:28:25.939 ##Start
18-05-23 11:28:25.940 Unique ID - ABC123
18-05-23 11:28:25.941 ##End
18-05-23 11:28:25.942 ##Start
18-05-23 11:28:25.943 Unique ID - PQR123
18-05-23 11:28:25.944 ##End
18-05-23 11:28:25.945 ##Start
18-05-23 11:28:25.946 Unique ID - MNO123
18-05-23 11:28:25.947 ##End
18-05-23 11:28:25.949 ##Start
18-05-23 11:28:25.950 Unique ID - ABC123
18-05-23 11:28:25.951 ##End
18-05-23 11:28:25.952 ##Start
18-05-23 11:28:25.953 Unique ID - PQR123
18-05-23 11:28:25.954 ##End
18-05-23 11:28:25.955 ##Start
18-05-23 11:28:25.956 Unique ID - MNO123
18-05-23 11:28:25.947 ##End
18-05-23 11:28:25.939 ##Start
18-05-23 11:28:25.940 Unique ID - ABC123
18-05-23 11:28:25.941 ##End
18-05-23 11:28:25.949 ##Start
18-05-23 11:28:25.950 Unique ID - ABC123
18-05-23 11:28:25.951 ##End
在这里,我想创建一个C.txt文件,它只包含ABC123信息,从#Start行到#End行,也按排序顺序。检查以下预期输出以获得详细理解

预期C.txt

18-05-23 11:28:25.939 ##Start
18-05-23 11:28:25.940 Unique ID - ABC123
18-05-23 11:28:25.941 ##End
18-05-23 11:28:25.942 ##Start
18-05-23 11:28:25.943 Unique ID - PQR123
18-05-23 11:28:25.944 ##End
18-05-23 11:28:25.945 ##Start
18-05-23 11:28:25.946 Unique ID - MNO123
18-05-23 11:28:25.947 ##End
18-05-23 11:28:25.949 ##Start
18-05-23 11:28:25.950 Unique ID - ABC123
18-05-23 11:28:25.951 ##End
18-05-23 11:28:25.952 ##Start
18-05-23 11:28:25.953 Unique ID - PQR123
18-05-23 11:28:25.954 ##End
18-05-23 11:28:25.955 ##Start
18-05-23 11:28:25.956 Unique ID - MNO123
18-05-23 11:28:25.947 ##End
18-05-23 11:28:25.939 ##Start
18-05-23 11:28:25.940 Unique ID - ABC123
18-05-23 11:28:25.941 ##End
18-05-23 11:28:25.949 ##Start
18-05-23 11:28:25.950 Unique ID - ABC123
18-05-23 11:28:25.951 ##End

请提出建议-如何使用shell脚本实现这一点?

是否总是三行:“开始”,然后是“唯一ID”,然后是“结束”?或者中间会有多余的线吗?如果总是3行,那么您可以执行
grep
sort
,如下:
grep-a1-b1abc123 a.txt B.txt | sort>C.txt
@TimJohns感谢您的回复。中间会有多余的线。我刚刚给出了3行的示例。如果下一个模式在另一个日志文件中的模式结束之前开始,您想要A1 A2 A3 B1 B2 B3还是A1 A2 B1 A3 B2 B3?(假设A1=#start,A2=#Unique Id,A3=#end from a.txt,B1=#start,B2=#Unique Id,B3=#end from b.txt,B1时间戳出现在A2和A3之间?我想如果不借助更强大的编程语言(Perl或Python是最常用的候选者)我就无法做到这一点了。)或者一个用于多行匹配的特殊实用程序,它并不总是出现在标准Unix安装中(例如这里提到的pcregrep:),这是您想要的:的Perl实现,它将按A1 A2 A3 B1 B2 B3顺序排序。如果您想要其他排序,只需通过命令行上的
sort
传递输出文件即可。