Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Bash: как разбить в файле длинные строки на короткие?  (Прочитано 3663 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн megafanat

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Есть текстовый файл с очень длинными строками.
В скрипте bash, обрабатывающем этот файл нужно разбить длинные строки на короткие. Но сделать это нужно так, чтобы потом можно было обратно объединить короткие строки в длинные, так чтобы получился исходный файл.

Самый простой вариант, который приходит в голову такой: внутри строк довольно много символов, которые можно считать разделителями: ;{}. Можно заменить каждый из этих символов на последовательность из этого символа и переноса строки. А при обратном преобразовании сделать наоборот: преобразовать символ и перенос строки в просто символ.

Как это можно сделать наиболее простым способом? Подскажите пожалуйста.

sed использовать не хочется, так как он работает внутри строк. Код разбивающий строки будет принципиально отличаться от кода объединяющего строки.
Хочется, чтобы разбивающий код превращался в объединяющий простым обменом мест паттернов.
Можно ли такое сделать?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net

Оффлайн AzraelKDE

  • Активист
  • *
  • Сообщений: 773
  • Kubuntu/Xubuntu user
    • Просмотр профиля
Вот вам кусок моего скрипта, для разбивки больших текстовых файлов по разделителю, авось пригодится:
awk '/_splitter_/ {i=i+1; outfile="'$filename'_part_"i}{print $0 > outfile}' $filename;
awk есть в стандартной поставке.
Java + HTML5 = Brain explosion.

 

Страница сгенерирована за 0.023 секунд. Запросов: 21.