我有一个以下格式的大日志文件

date pattern1
time pattern2
variable1_name val1
variable2_name val2
variable3_name val3
variable4_name val4
date pattern1
time pattern2
variable1_name val1
variable2_name val2
variable3_name val3
variable4_name val4


我创建了一个shell脚本,以相同的顺序在数据库中插入这些值val1,val2,val3,val4

问题是文件有时会损坏,变量的顺序不同,例如下面的示例:

date pattern1
time pattern2
variable2_name val2
variable1_name val1
variable3_name val3
variable4_name val4
date pattern1
time pattern2
variable4_name val4
variable2_name val2
variable3_name val3
variable1_name val1


使用shell脚本,我想将pattern1和pattern2之后的行重新排列为与原始日志文件相同的顺序。

最佳答案

如果变量名称不是字母数字顺序(例如,如果variable1_name为“ Nationality”,variable2_name为“ Height”,依此类推),则本机排序功能将不起作用。但这将:

sed '/pattern2/{N;N;N;N;P;h;s/.*\(variable1_name\)/\1/;P;g;s/.*\(variable2_name\)/\1/;P;g;s/.*\(variable3_name\)/\1/;P;g;s/.*\(variable4_name\)/\1/;P;d;}' filename

10-08 09:25