[116209] Еще один вариант, который можно предложить.
fsarchiver[116559] хорошо справляется с восстановлением файловой системы на раздел другого размера или даже на другой тип файловой системы.
После восстановления fsarchive нужно обновить целевой /etc/fstab и установить системный загрузчик из chroot.
fsarchiver -h[116561] показывает примеры преобразования файловой системы типа[116224].
для ответа sed
вы можете использовать его для фильтрации десятичных знаков :
sed 's/\.[0-9]\{1,\}//'
Как он работает :
\.
будет соответствовать букве .
[0-9]\{1,\}
будет соответствовать одной или нескольким цифрам Полученный образец означает "соответствовать букве ".
, за которой следует одна или несколько цифр", и заменяет это ничем.
Если я правильно понял ваш вопрос. Ваш желаемый результат -
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"}'
Я удивлен, что вы что-то получили, учитывая, что 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} }