Это файл в моей внутренней сети. Я не могу вспомнить, где я нашел удобный sed
однострочный. Вы можете найти что-нибудь, если будете искать «sed one-liner»
Вам когда-нибудь нужно было комбинировать строки текста, но слишком утомительно это делать вручную.
Например, представьте, что у нас есть текстовый файл с сотнями строк, который выглядит следующим образом:
14/04/2003,10:27:47,0
IdVg,3.000,-1.000,0.050,0.006
GmMax,0.011,0.975,0.005
IdVg,3.000,-1.000,0.050,0.006
GmMax,0.011,0.975,0.005
14/04/2003,10:30:51,600
IdVg,3.000,-1.000,0.050,0.006
GmMax,0.011,0.975,0.005
IdVg,3.000,-1.000,0.050,0.006
GmMax,0.010,0.975,0.005
14/04/2003,10:34:02,600
IdVg,3.000,-1.000,0.050,0.006
GmMax,0.011,0.975,0.005
IdVg,3.000,-1.000,0.050,0.006
GmMax,0.010,0.975,0.005
Каждая дата (14/04/2003) является началом записи данных и продолжается в следующих четырех строках.
Мы хотели бы ввести это в Excel в виде файла с разделением запятыми и увидеть каждую запись в отдельной строке.
В нашем примере нам нужно добавить любую строку, начинающуюся с G или I, к предыдущей строке и вставить запятую, чтобы получить следующее:
14/04/2003,10:27:47,0,IdVg,3.000,-1.000,0.050,0.006,GmMax,0.011,0.975,0.005,IdVg,3.000,...
14/04/2003,10:30:51,600,IdVg,3.000,-1.000,0.050,0.006,GmMax,0.011,0.975,0.0005,IdVg,3.000,...
14/04/2003,10:34:02,600,IdVg,3.000,-1.000,0.050,0.006,GmMax,0.011,0.975,0.0005,IdVg,3.000,...
Это классическое применение «регулярного выражения», и снова в помощь приходит sed.
Редактирование можно выполнить одной командой sed:
sed -e :a -e '$!N;s/\n\([GI]\)/,\1/;ta' -e 'P;D' filename >newfilename
Я не говорил, что это будет очевидно или просто, не так ли?
Это та команда, которую вы записываете где-то в тех редких случаях, когда она вам нужна.