Я не знаю, правильно ли понял scond часть вашего запроса:
Один столбец
a [кг / м]
в формат двух столбцовa [кг / м]
Но это преобразует ваш CSV в файл, разделенный табуляцией и с дополнительным столбцом перед [кг / м]:
sed -e 's /, / \ t / g' -e 's: \ (\ [Kg / m \] \): \ t \ 1: g 'afile.csv> newfile.csv
Пример:
$ cat afile.csv
a[Kg/m],b[Kg/m],c
d[Kg/m],e[Kg/m],f
g[Kg/m],h[Kg/m],i
$ sed -e 's/,/\t/g' -e 's=\(\[Kg/m\]\)=\t\1=g' afile.csv > newfile.csv
$ cat newfile.csv
a [Kg/m] b [Kg/m] c
d [Kg/m] e [Kg/m] f
g [Kg/m] h [Kg/m] i
В этой команде sed есть два сценария:
-e' s /, / \ t / g '
заменяет ', '
в
-e' s = \ (\ [Kg / m \] \) = \ t \ 1 = g '
заменяет любой [Kg / m ]
для [кг / м]
Теперь, без замены вкладок, вы можете добавить дополнительный столбец в свой CSV-файл следующим образом:
$ sed -e 's=\(\[Kg/m\]\)=,\1=g' afile.csv > newfile.csv
$ cat newfile.csv
a,[Kg/m],b,[Kg/m],c
d,[Kg/m],e,[Kg/m],f
g,[Kg/m],h,[Kg/m],i
Вы можете перейти от ведения журнала и вращения с помощью logrotate
к журналу journald
с помощью systemd-cat -t indentifier cmdline
. Установите размеры журнала/записи в /etc/systemd/journald.conf
или используйте journalctl --vacuum-size=, --vacuum-time=, --vacuum-files=
Другим способом является logrotate
один раз в день, используя функцию prerotate/postrotate, чтобы остановить серверы, повернуть журнал и снова запустить серверы. Время логротации зависит от задания systemd logrotate.timer
или (ana)cron, которое может быть приурочено к 4 утра или когда трафик от низкого до нуля.
prerotate
# stop jboss/tomcat server
endscript
daily
rotate 10
compress
size 20M
postrotate
#start servers
endscript
Я знаю, что в syslog-ng вы можете установить имя выходного файла для использования переменных, включая такие вещи, как дата, так что он будет автоматически начинать запись в новый файл в 12:00 утра нового дня, с нулевыми потерями.
Правда, для этого нужно изменить вашу программу syslog на syslog-ng. Но гибкость звучит именно так, как вам нужно.
Вот как я это делаю для Catalina
журналов:
/var/log/tomcat/catalina.out {
daily
size 100m
compressext.gz
compress
delaycompress
compressoptions "-9"
dateformat -%Y%m%d-%s
ifempty
copytruncate
prerotate
SIZE=$(stat --printf='%s' /var/log/tomcat/catalina.out)
/bin/bash -c "tail -c $SIZE -f /var/log/tomcat/catalina.out > /var/log/tomcat/tmp.log" &
endscript
postrotate
pgrep tail | xargs kill -9
cat /var/log/tomcat/tmp.log >> /var/log/tomcat/catalina.out
rm /var/log/tomcat/tmp.log -f
endscript
}
Вы можете дополнительно указать -s
с tail
, чтобы уменьшить интервал обновления самой команды tail
. И поскольку вы используете опцию -c
, это быстро.