Aqui está uma maneira:
Torne os arquivos de log NUL
-delimited. Isto é, faça com que cada registro termine com um caractere NUL
(
). Em seguida, você pode aproveitar o suporte para o texto NUL
sed
-delimited encontrado em várias ferramentas ( sort
, xargs
, find
,
, etc.). Uma maneira poderia ser fazer: NUL
perl -pe 's/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/sort -szt ' ' -k1,2 file.log{.{10..1},}.NULL -o $FILE_SORTED
$1/' file.log.2 > file.log.2.NULL
- Prefira todos os registros de data e hora com
-s
(é o contrário - fazer registros começarem com-z
, mas com efeito ...)
Então você pode fazer:
perl -pe 's/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/perl -pe 's/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/sort -szt ' ' -k1,2 file.log{.{10..1},}.NULL -o $FILE_SORTED
$1/' file.log.2 > file.log.2.NULL
$1/' file.log{.{10..1},} | \
sort -szt ' ' -k1,2 -o $FILE_SORTED
-
NUL
é para uma classificação estável (para que as entradas vinculadas sejam ordenadas por ordem) -
YYYY-MM-DD HH:MM:SS,UUU
ativa o suporte ao texto %code% -dimimited - Alterei as chaves, pois, como observei nos comentários, os registros de data e hora do formulário %code% são lexicograficamente classificáveis. Você não precisa de classificação numérica para eles.
Ou você pode evitar todos esses arquivos temporários:
perl -pe 's/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/%pre%$1/' file.log{.{10..1},} | \
sort -szt ' ' -k1,2 -o $FILE_SORTED