Intereting Posts
phpmyadmin пустая страница после входа в систему с помощью nginx / php-fpm Как запустить не более n параллельных подоболочек терминал: отображение специальных символов Как читать / изменять контекст SELinux на смонтированном изображении ext4 из системы, отличной от SELinux? Запись Minecraft с помощью recordmydesktop на Linux Mint 12 64bit Как устранить то, что ест память? Графический интерфейс низкого разрешения для Linux на RaspberryPi, используемый в качестве мобильного устройства невозможно инициализировать фильтр таблицы i3 – совместное использование рабочего пространства на нескольких мониторах Как смонтировать каталог как можно раньше, или сразу после fstab? Как хранить / загружать экспортированные переменные среды в / из файла FreeBSD: удаление символических ссылок в devfs сравнение времени, заданного пользователем для времени файла журнала Как восстановить файл casper-rw в разделе casper-rw Как получить новые форматы файловой системы для использования в mkfs?

Разделить файл на отдельные ячейки Excel на основе шаблона

У меня большой файл длиной в пару сотен строк. Этот файл разделен на множество частей специальным разделителем, ###. Эта строка “###” появляется после нескольких строк, которые могут меняться каждый раз. Поэтому мне нужно, чтобы содержимое перед “###” находилось в одной ячейке одного файла Excel, а содержимое после “###” в отдельной ячейке того же файла Excel. введите описание изображения здесь Я знаком с split и awk, но не могу создать командную строку, которая будет делать то, что я описал, какие-нибудь идеи?

Создайте исполняемый скрипт test.awk со следующим содержимым:

 awk ' # { system( "echo \"" $0 "\" >&2") } BEGIN { R = "\"" } /^###/ { sub(/\n$/,"",R) print R "\"" R = "\"" next } { sub(/\n$/,"") gsub(/"/,"\"\"") R = R $0 "\n" } ' $@ к awk ' # { system( "echo \"" $0 "\" >&2") } BEGIN { R = "\"" } /^###/ { sub(/\n$/,"",R) print R "\"" R = "\"" next } { sub(/\n$/,"") gsub(/"/,"\"\"") R = R $0 "\n" } ' $@ к awk ' # { system( "echo \"" $0 "\" >&2") } BEGIN { R = "\"" } /^###/ { sub(/\n$/,"",R) print R "\"" R = "\"" next } { sub(/\n$/,"") gsub(/"/,"\"\"") R = R $0 "\n" } ' $@ 

тогда беги

 test.awk longfile.txt > longfile.csv 

Откройте longfile.csv с помощью libreoffice Calc.

longfile.txt:

 dkdkdkdk qsdfqlsdf qsdfjqlsdf ###### qdfqj qsdfmlkjqsd qsiapriopazeiru wqsdfqesr ###### rurururururururuur rururururururururu ururururururururur ###### iiiiiiiiiiii iiiiiiiiiiii iiiiiiiiiiii iiiiiiiiiiii iiiiiiiiiiii iiiiiiiiiiii ###### uuuuuuuuuuu uuuuuuuuuuu uuuuuuuuuuu uuuuuuuuuuu uuuuuuuuuuu uuuuuuuuuuu uuuuuuuuuuu uuuuuuuuuuu ###### 

longfile.csv:

 "dkdkdkdk qsdfqlsdf qsdfjqlsdf" "qdfqj qsdfmlkjqsd qsiapriopazeiru wqsdfqesr" "rurururururururuur rururururururururu ururururururururur" "iiiiiiiiiiii iiiiiiiiiiii iiiiiiiiiiii iiiiiiiiiiii iiiiiiiiiiii iiiiiiiiiiii" "uuuuuuuuuuu uuuuuuuuuuu uuuuuuuuuuu uuuuuuuuuuu uuuuuuuuuuu uuuuuuuuuuu uuuuuuuuuuu uuuuuuuuuuu"