Хотя обычно для создания списков, подобных этому, можно использовать раскрытие фигурных скобок, это может быть достаточно большим, чтобы вызвать проблемы. Несмотря на то, что это всего лишь ~17 миллионов слов, Bash 4.4 не удается построить список на виртуальной машине с 2 ГБ памяти, и происходит сбой через 1,5 минуты без каких-либо результатов.
Возможно, что-то вроде Perl было бы лучше:
perl -le 'foreach $i ("AAA".."ZZZ") { foreach $j ("000".."999") { print "$i-$j" }} ; ' > plates
Список создается примерно за 5 секунд.
Если вам нужно сделать это в Bash, разделите задание на более мелкие циклы.
Тем не менее, мне интересно, есть ли лучший способ сделать то, чего вы на самом деле пытаетесь достичь. Если имеющиеся у вас данные не включают все 17 миллионов возможных пластин, вам, вероятно, не нужно хранить их все. Если это так, вы можете использовать что-то другое, кроме оболочки (, то есть базу данных ).
PDF-файлы — странные вещи, и текст в них не обязательно находится в каком-либо нормальном порядке.
Попробуйте вариант -layout
pdftotext.
В зависимости от PDF это может дать вам текстовый файл с несколькими -столбцами, который отлично читается (, особенно. на широком экране -с более чем 80 колонками ), но текст в одной колонке -может быть более полезным.
--
Я считаю, что самый простой способ преобразовать текст из нескольких столбцов -в один столбец -— отредактировать текст с помощью vim, вставить TAB между столбцами и написать сценарий perl для объединения столбцов в один столбец на каждая страница (страницы разделены формой -символов подачи,^L
). Это может занять много времени -и утомительно.
Мои первые попытки написать perl-скрипт для этого пытались идентифицировать столбцы по количеству пробелов между столбцами, но, к сожалению, это варьируется от 1 или 2 пробелов до 5 или более (и есть также тот факт, что некоторые столбцы выравниваются дополнительными пробелами ), поэтому нет автоматического способа различить нормальный интервал между словами и интервал между столбцами. И он совершенно не работает с таблицами в выводе pdftotext
.
Гораздо проще вручную редактировать и вставлять символы TAB и разделять столбцы на них, а vi/vim делает повторяющиеся задачи редактирования, подобные этой, довольно простыми :найдите удобное место для курсора, чтобы вставить TAB, нажмите Ctrl-V
и переместите курсор вниз к нижней части страницы или раздела, который вы редактируете, затем нажмите rTAB
, чтобы заменить выбранный столбец vim -символами табуляции.
Наконец, в своих комментариях вы упомянули, что видели символ Unicode «ПРАВАЯ ОДНА КАВАТА» (U+2019 )в выводимом тексте. Это совершенно нормально, многие (большинство? )PDF-файлы содержат символы Юникода (, например. для умных -кавычек и em -тире и многоточия и т. д. ), встроенных в них, поскольку они не ограничены только символами ASCII