2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Поиск и замена в текстовом файле (Linux)
Сообщение18.07.2020, 15:50 


05/09/16
11467
У меня есть linux-подобная среда с bash (grep, sed и т.п. имеется), и мне надо сделать следующее
Имеется текстовый файл 0.log в котором есть строки (только такие, других нет)
Код:
2020-07-16T20:06:35Z System clock wrong by -0.006165 seconds (ignored)
2020-07-16T20:08:06Z System clock wrong by -0.002446 seconds (ignored)
2020-07-16T20:09:06Z System clock wrong by 0.006101 seconds (ignored)
Я хочу получить текстовый файл 1.csv с такими строками
Код:
2020-07-16 20:06:35;-0,006165
2020-07-16 20:08:06;-0,002446
2020-07-16 20:09:06;0,006101
То есть в каждой строке исходного файла надо заменить одни подстроки на другие и записать результат в выходной файл:
1. "T" заменить на пробел
2. "Z" заменить на ";"
3. "." заменить на ","
4. " System clock wrong by " удалить
5. " seconds (ignored)" удалить

Можно (и как?) сделать это одной командой? Как превратить команду в исполняемый файл (скрипт)?

Полагаю что вопрос очень элементарный.

P.S. Меряю отклонение системных часов по ntp замерам, хочу получить сразу .csv готовый для экселя а не делать замены вручную в экселе.

 Профиль  
                  
 
 Re: Поиск и замена в текстовом файле (Linux)
Сообщение18.07.2020, 16:01 
Заслуженный участник


09/05/12
25179
Посмотрите описание стандартной утилиты cut, ее хватит на все это. Ну или сразу используйте awk.

 Профиль  
                  
 
 Re: Поиск и замена в текстовом файле (Linux)
Сообщение18.07.2020, 16:49 
Заслуженный участник


16/02/13
4105
Владивосток
А что, собственно, не готово в этом файле? Excel у меня нет, но Libre Calc вполне загрузит этот файл — делить поля по пробелу, дополнительные разделители TZ, ненужные столбцы пропускать. Ну разве что дату и время разделит по двум столбцам.

 Профиль  
                  
 
 Re: Поиск и замена в текстовом файле (Linux)
Сообщение18.07.2020, 17:33 


05/09/16
11467
iifat в сообщении #1474381 писал(а):
А что, собственно, не готово в этом файле?

Вот это:
iifat в сообщении #1474381 писал(а):
делить поля по пробелу, дополнительные разделители TZ, ненужные столбцы пропускать.

Хочется автоматизировать. И "Т" не разделитель, в один столбец должны попасть дата и время через пробел (тогда эксель это правильно интерпретирует).

 Профиль  
                  
 
 Re: Поиск и замена в текстовом файле (Linux)
Сообщение18.07.2020, 18:30 


09/05/16
138
К счастью, эти изменения можно однозначно выразить в виде команд sed:

wrest в сообщении #1474368 писал(а):
1. "T" заменить на пробел
2. "Z" заменить на ";"
3. "." заменить на ","
4. " System clock wrong by " удалить
5. " seconds (ignored)" удалить


Используется синтаксис Bash
sed 's/T/ /;s/Z/;/;s/\./,/;s/ System clock wrong by //;s/ seconds (ignored)//' <file.txt >file.csv

 Профиль  
                  
 
 Re: Поиск и замена в текстовом файле (Linux)
Сообщение18.07.2020, 20:08 


05/09/16
11467
aitap
Спасибо большое! Мне даже подсказали как сократить (объединить пункты 2 и 4), получилось:
Код:
sed 's/T/ /; s/Z System clock wrong by /\;/; s/\./,/; s/seconds (ignored)//' 0.log >1.csv

 Профиль  
                  
 
 Re: Поиск и замена в текстовом файле (Linux)
Сообщение19.07.2020, 22:26 


05/09/16
11467
В общем, вот для чего это было нужно.
Это измерения отклонения системных часов android планшета ежеминутные, по ntp (cron запусаает утилиту chronyd -Q) ну вернее пытается. Если устройство заблокировано, то android останавливает процессы и тогда измерение запускается как получится. Работает все это в бэкграунде. Ну а дальше в эксель, scatter plot и линия тренда.

(Оффтоп)

Изображение

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group