Я застрял с этим в течение нескольких часов и перебрал множество различных инструментов, чтобы выполнить работу. Безуспешно. Было бы замечательно, если бы кто-то мог помочь мне с этим.
Вот проблема:
У меня очень большой файл CSV (400mb+), который отформатирован неправильно. Прямо сейчас это выглядит примерно так:
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 и т.д.).