Разделить колонку на 2+ строки;Укажите разделитель и максимальную длину символа - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть файл данных, который состоит из 10 столбцов и более 30 000 строк.Мне нужно предварительно обработать этот файл данных для последующего использования (и окончательный формат файла ДОЛЖЕН быть Excel; хранить его как простой текстовый документ, к сожалению, не вариант).

Проблема, с которой я сталкиваюсь, состоит в том, что несколько строк в столбце 7 превышают ограничение на число символов в Excel (32 767).Как указать, чтобы разделить столбец 7 так, чтобы он не превышал ограничение по количеству символов, но чтобы он также содержал контекст текста в столбце?(Столбец 7 содержит несколько предложений, и я не хочу их разбивать).

Например / простота: следующий абзац находится в столбце «А».Я хочу разбить этот абзац на число строк "X", как показано, чтобы каждая строка в столбце A не превышала 100 символов при сохранении структуры предложения.

  • Delimiter: "."{точка, за которой следует пробел}

  • Макс. длина персонажа: 100

Он рассказал нам очень захватывающую приключенческую историю.Мы никогда не были в Азии и не посещали Африку.Должны ли мы начать занятия сейчас, или мы должны ждать, пока все доберутся сюда.Все были заняты, поэтому я пошел в кино один.В прошлую пятницу через три недели я увидел полосатого синего червяка, пожимающего руку безногой ящерице.

Desired Output

Вот что я попробовал:

  • sed / gsub : но это заменяет каждый экземпляр разделителя
  • fold : но я не знаю, как указатьразделитель, отличный от пробела, и использование пробела в качестве переноса нарушает предложение.
  • substr : Я думаю, что это может быть путь, но сейчас, это только (1) вывод первой «строки» и (2) разбиение абзаца намаксимальная длина символа, а не требуемый разделитель.
cat paragraph | awk -F ". " 'BEGIN { OFS="\n\n"}; { $0=substr($0,1,100); print}'

1 Ответ

0 голосов
/ 01 декабря 2018

Если вы хотите разбить столбец A, вы можете использовать sed.
Вы пытаетесь сопоставить максимально возможное количество символов с максимумом 99, за которым следуют точка и пробел.
Заменитепоследний пробел с новой строки.

columnA="He told us a very exciting adventure story. We have never been to Asia, nor have we visited Africa. Should we start class now, or should we wait for everyone to get here. Everyone was busy, so I went to the movie alone. Last Friday in three week’s time I saw a striped blue worm shake hands with a legless lizard."
echo "${columnA}" | sed -r 's/(.{1,99}\.) /\1\n/g'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...