2014 dxdy logo

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

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




 
 Поиск и замена в текстовом файле (Linux)
Сообщение18.07.2020, 15:50 
У меня есть 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 
Посмотрите описание стандартной утилиты cut, ее хватит на все это. Ну или сразу используйте awk.

 
 
 
 Re: Поиск и замена в текстовом файле (Linux)
Сообщение18.07.2020, 16:49 
А что, собственно, не готово в этом файле? Excel у меня нет, но Libre Calc вполне загрузит этот файл — делить поля по пробелу, дополнительные разделители TZ, ненужные столбцы пропускать. Ну разве что дату и время разделит по двум столбцам.

 
 
 
 Re: Поиск и замена в текстовом файле (Linux)
Сообщение18.07.2020, 17:33 
iifat в сообщении #1474381 писал(а):
А что, собственно, не готово в этом файле?

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

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

 
 
 
 Re: Поиск и замена в текстовом файле (Linux)
Сообщение18.07.2020, 18:30 
К счастью, эти изменения можно однозначно выразить в виде команд 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 
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 
В общем, вот для чего это было нужно.
Это измерения отклонения системных часов android планшета ежеминутные, по ntp (cron запусаает утилиту chronyd -Q) ну вернее пытается. Если устройство заблокировано, то android останавливает процессы и тогда измерение запускается как получится. Работает все это в бэкграунде. Ну а дальше в эксель, scatter plot и линия тренда.

(Оффтоп)

Изображение

 
 
 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group