Уменьшение точности даты

[116209] Еще один вариант, который можно предложить.

fsarchiver[116559] хорошо справляется с восстановлением файловой системы на раздел другого размера или даже на другой тип файловой системы.

  1. Можно сделать резервную копию ведущего
  2. В предыдущем примере используется три раздела, /boot / и /home.
  3. Разделите новый диск на разделы и восстановите ведущий. fsa
  4. Очевидно, что вам нужно заменить соответствующие устройства

После восстановления fsarchive нужно обновить целевой /etc/fstab и установить системный загрузчик из chroot.

fsarchiver -h[116561] показывает примеры преобразования файловой системы типа[116224].

2
12.06.2015, 00:48
3 ответа

для ответа sed вы можете использовать его для фильтрации десятичных знаков :

sed 's/\.[0-9]\{1,\}//'

Как он работает :

  • \. будет соответствовать букве .
  • [0-9]\{1,\} будет соответствовать одной или нескольким цифрам

Полученный образец означает "соответствовать букве ". , за которой следует одна или несколько цифр", и заменяет это ничем.

0
27.01.2020, 22:54

Если я правильно понял ваш вопрос. Ваш желаемый результат -

out.txt

sys00 завершен примерно: 2015-06-11 01:42:29 sys01 завершен примерно: 2015-06-11 01:21:17 {{1} } sys02 завершился примерно: 2015-06-11 03:51:56 sys03 завершился примерно: 2015-06-11 04:32:12 sys04 завершился примерно: 2015-06-11 01: 40:47 sys05 завершился примерно: 2015-06-11 01:16:12

использовать разделитель полей awk

awk -F. '{print $ 1}' inputfile.txt | awk -F- '{print $ 1, $ 2, $ 3}'

Если вы хотите получить такой вывод out2.txt

sys00 завершился примерно: 2015 06 11 01:42:29 - 0700 sys01 завершился примерно: 2015 06 11 01:21:17 -0700 sys02 завершился примерно: 2015 06 11 03:51:56 -0700 sys03 завершился примерно: 2015 06 11 04:32:12 -0700 sys04 завершился примерно: 2015 06 11 01:40:47 -0700 sys05 завершился примерно: 2015 06 11 01:16:12 -0700

awk -F. '{print $ 1}' tst.txt | awk -F- '{print $ 1, $ 2, $ 3, "-0700"}'

0
27.01.2020, 22:54

Я удивлен, что вы что-то получили, учитывая, что stat -f "% m" ... недействителен.Вы уверены, что скопировали текущую версию своей команды?

Похоже, вы используете -c (указать формат), а не -f (файловую систему), вы получаете точку монтирования для списка файлов, которые вы предоставляете для stat, которые вы затем усечь до единственного пути, а затем указать дату для точки монтирования и указать формат.

Есть несколько вещей, которые вы можете сделать, чтобы ускорить или упростить, первая из которых - не использовать дату.

COMMAND='stat -fc "%y" '"$BASENAME"'/../logs/catTest*.log |& head -n1'

это, к сожалению, зависит от локали и включает наносекунды, поэтому мы можем использовать

COMMAND='LC_ALL=C stat -fc "%y" '"$BASENAME"'/../logs/catTest*.log |& head -n1|sed "s/\.[0-9]\+//"'

Второй вариант - не иметь статистику вызова даты

COMMAND='date `stat -fc "@%Y" '"$BASENAME"'/../logs/catTest*.log |& head -n1` +"%Y-%m-%d %H:%M:%S %z"'

Если это все еще отображает наносекунды (чего не должно быть, отправьте отчет об ошибке), вы можете отфильтровать с более простым регулярным выражением.

COMMAND='date `stat -fc "@%Y" '"$BASENAME"'/../logs/catTest*.log |& head -n1` +"%Y-%m-%d %H:%M:%S %z"|sed "s/\.0\+//"'

Есть еще одна вещь, которая, возможно, может ускорить процесс (в зависимости от того, быстрее ли будет обработать все файлы журнала или порождать другую задачу), и это фильтрация файлов перед stat.

COMMAND = 'ls "$ BASENAME "'/../logs/catTest*.log|head -n1 | LC_ALL = C xargs stat -fc"% y "| sed" s /. [0-9] + //'

{{1} }
0
27.01.2020, 22:54

Теги

Похожие вопросы