История изменений
Исправление legolegs, (текущая версия) :
Вроде разобрался. Были непонятки с sort из-за локали и из-за того, что в мане плохо описан ключ -k.
for i in log1.txt log2.txt; do
<$i awk '
/^[[:digit:]]/ {
close("base64 -w0");
printf("\n%s\t%s\t%s %s\t",$1,$2,$3,$4); /*id, month, day, time => id, month, day+time*/
}
{
print | "base64 -w0"
}
' | tail -n+2 > ${i%.*}.b64;
done
LANG=C sort -t$'\t' -k1nr -k2Mr -k3r -u log?.b64 | cut -f4 | base64 -d > full_log.txt
Если, допустим, тестовые данные такие, что:
# cut -f1,2,3 log?.b64
12730 Nov 08 07:30
12729 Nov 08 07:30
12729 Jan 20 12:34
12729 Feb 20 12:34
12729 Jun 20 12:34
12729 Dec 20 12:34
12729 Nov 08 07:30
12731 Nov 08 07:31
12730 Nov 08 07:30
12729 Nov 08 07:30
то, меняя порядок -k...
-ключей у sort можно выбирать, по каким столбцам в каком порядке сортировать. Например:
# LANG=C sort -t$'\t' -k1nr -k2Mr -k3r -u log?.b64| cut -f1,2,3
12731 Nov 08 07:31
12730 Nov 08 07:30
12729 Dec 20 12:34
12729 Nov 08 07:30
12729 Nov 08 07:30
12729 Jun 20 12:34
12729 Feb 20 12:34
12729 Jan 20 12:34
Или, если номера не обязательно последовательны, то сначала опираемся на дату:
# LANG=C sort -t$'\t' -k2Mr -k3r -k1nr -u log?.b64| cut -f1,2,3
12729 Dec 20 12:34
12731 Nov 08 07:31
12730 Nov 08 07:30
12729 Nov 08 07:30
12729 Nov 08 07:30
12729 Jun 20 12:34
12729 Feb 20 12:34
12729 Jan 20 12:34
Ключи sort: число - номер поля, M - сортировка месяцев JAN<FEB<...<DEC , n - числовая сортировка, r - задом наперёд.
Исправление legolegs, :
Вроде разобрался. Были непонятки с sort из-за локали и из-за того, что в мане плохо описан ключ -k.
for i in log1.txt log2.txt; do
<$i awk '
/^[[:digit:]]/ {
close("base64 -w0");
printf("\n%s\t%s\t%s %s\t",$1,$2,$3,$4); /*id, month, day, time => id, month, day+time*/
}
{
print | "base64 -w0"
}
' | tail -n+2 > ${i%.*}.b64;
done
LANG=C sort -t$'\t' -k1nr -k2Mr -k3r -u log?.b64 | base64 -d > full_log.txt
Если, допустим, тестовые данные такие, что:
# cut -f1,2,3 log?.b64
12730 Nov 08 07:30
12729 Nov 08 07:30
12729 Jan 20 12:34
12729 Feb 20 12:34
12729 Jun 20 12:34
12729 Dec 20 12:34
12729 Nov 08 07:30
12731 Nov 08 07:31
12730 Nov 08 07:30
12729 Nov 08 07:30
то, меняя порядок -k...
-ключей у sort можно выбирать, по каким столбцам в каком порядке сортировать. Например:
# LANG=C sort -t$'\t' -k1nr -k2Mr -k3r -u log?.b64| cut -f1,2,3
12731 Nov 08 07:31
12730 Nov 08 07:30
12729 Dec 20 12:34
12729 Nov 08 07:30
12729 Nov 08 07:30
12729 Jun 20 12:34
12729 Feb 20 12:34
12729 Jan 20 12:34
Или, если номера не обязательно последовательны, то сначала опираемся на дату:
# LANG=C sort -t$'\t' -k2Mr -k3r -k1nr -u log?.b64| cut -f1,2,3
12729 Dec 20 12:34
12731 Nov 08 07:31
12730 Nov 08 07:30
12729 Nov 08 07:30
12729 Nov 08 07:30
12729 Jun 20 12:34
12729 Feb 20 12:34
12729 Jan 20 12:34
Ключи sort: число - номер поля, M - сортировка месяцев JAN<FEB<...<DEC , n - числовая сортировка, r - задом наперёд.
Исходная версия legolegs, :
for i in log1.txt log2.txt; do
<$i awk '
/^[[:digit:]]/ {
close("base64 -w0");
printf("\n%s\t%s\t%s %s\t",$1,$2,$3,$4); /*id, month, day, time*/
}
{
print | "base64 -w0"
}
' | tail -n+2 > ${i%.*}.b64;
done
LANG=C sort -t$'\t' -k1nr -k2Mr -k3r -u log?.b64 | base64 -d > full_log.txt
Если, допустим, тестовые данные такие, что:
# cut -f1,2,3 log?.b64
12730 Nov 08 07:30
12729 Nov 08 07:30
12729 Jan 20 12:34
12729 Feb 20 12:34
12729 Jun 20 12:34
12729 Dec 20 12:34
12729 Nov 08 07:30
12731 Nov 08 07:31
12730 Nov 08 07:30
12729 Nov 08 07:30
то, меняя порядок -k...
-ключей у sort можно выбирать, по каким столбцам в каком порядке сортировать. Например:
# LANG=C sort -t$'\t' -k1nr -k2Mr -k3r -u log?.b64| cut -f1,2,3
12731 Nov 08 07:31
12730 Nov 08 07:30
12729 Dec 20 12:34
12729 Nov 08 07:30
12729 Nov 08 07:30
12729 Jun 20 12:34
12729 Feb 20 12:34
12729 Jan 20 12:34
Или, если номера не обязательно последовательны, то сначала опираемся на дату:
# LANG=C sort -t$'\t' -k2Mr -k3r -k1nr -u log?.b64| cut -f1,2,3
12729 Dec 20 12:34
12731 Nov 08 07:31
12730 Nov 08 07:30
12729 Nov 08 07:30
12729 Nov 08 07:30
12729 Jun 20 12:34
12729 Feb 20 12:34
12729 Jan 20 12:34