У меня есть файл, содержащий формат временной метки, как показано ниже.
'2020-03-07T14:42:36Z UTC [ db=dev user=rdsdb pid=16913 userid=1 xid=5326 ]' LOG: SET statement_timeout TO 120000
Я хочу изменить этот формат временной метки на
2020-03-07 14:42:36 UTC
в этом файле.
Это файл журнала, к которому у меня нет доступа, чтобы напрямую изменить формат, и в нем миллиарды таких строк.
решение1
sed -e 's/T/ /' -e 's/Z//' file
или, что то же самое,
sed 's/T/ /; s/Z//' file
Это сначала заменит первый T
символ в каждой строке файла на пробел, а затем удалит первое вхождение Z
. Это преобразует
'2020-03-07T14:42:36Z UTC [ db=dev user=rdsdb pid=16913 userid=1 xid=5326 ]' LOG: SET statement_timeout TO 120000
в
'2020-03-07 14:42:36 UTC [ db=dev user=rdsdb pid=16913 userid=1 xid=5326 ]' LOG: SET statement_timeout TO 120000
Перенаправить в новый файл для сохранения данных. Если вы хотите выполнить редактирование файла на месте, сначала убедитесь, что редактирование выполняется правильно (команда предполагает, что в каждой строке будет не больше и не меньше одной такой временной метки), затем вы, возможно, можете использовать sed -i
для изменения файла на месте.