Регулярное выражение в нескольких строках

Я застрял в этом на несколько часов и перебрал множество различных инструментов, чтобы выполнить свою работу. Безуспешно. Было бы здорово, если бы кто-нибудь мог мне с этим помочь.

Вот проблема:

У меня есть очень большой файл CSV (более 400 МБ), который отформатирован неправильно. Прямо сейчас это выглядит примерно так:

This is a long abstract describing something. What follows is the tile for this sentence."   
,Title1  
This is another sentence that is running on one line. On the next line you can find the title.   
,Title2

Как вы, вероятно, видите, заголовки «, Title1» и «, Title2» должны фактически находиться в той же строке, что и предыдущее предложение. Тогда это будет выглядеть примерно так:

This is a long abstract describing something. What follows is the tile for this sentence.",Title1  
This is another sentence that is running on one line. On the next line you can find the title.,Title2

Обратите внимание, что конец предложения может содержать кавычки или нет. В конце концов, их тоже следует заменить.

Вот что я придумал до сих пор:

sed -n '1h;1!H;${;g;s/\."?.*,//g;p;}' out.csv > out1.csv

Это должно фактически выполнить работу по сопоставлению выражения в нескольких строках. К сожалению, нет :)

Выражение ищет точку в конце предложения и необязательные кавычки, а также символ новой строки, с которым я пытаюсь сопоставить. *.

Помощь очень ценится. И не имеет значения, какой инструмент выполняет эту работу (awk, perl, sed, tr и т. Д. ).

15
задан Flimzy 21 September 2019 в 14:04
поделиться