Как убрать перенос строки из больших чисел? [дубликат]

На этот вопрос уже есть ответ здесь:

Я хотел бы иметь возможность генерировать большое количество цифр ( например, первый миллион десятичных цифр константы Напьера), а затем сохраните число в текстовом файле без разрывов строк.

Я не могу сделать это ни в GEdit, ни в LibreOffice Writer. Я использую Maxima в Терминале для генерации чисел, но они выводятся с разрывами строк.

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

Я использую приведенный ниже синтаксис терминала для генерации первого миллиона десятичных цифр константы Напье, а затем копирую и вставляю цифры в текстовый редактор (удаляя \\ и \ n).

sudo apt-get install wxmaxima

maxima

bfloat(%e),fpprec:1000000;

Когда я пытаюсь скопировать и вставить в GEdit, а затем удалить разрывы строк, я могу получить все цифры в одной строке, но цифры не будут отображаться. Поскольку GEdit может успешно удалять разрывы строк и отображать 1000 цифр, но не один миллион цифр, мне интересно, может ли это быть проблемой памяти.Однако, когда я пытаюсь сохранить файл как TXT, а затем открывать его в LibreOffice, он по-прежнему содержит разрывы строк. LibreOffice вообще не может удалить разрывы строк, даже когда я копирую и вставляю прямо из Терминала.

Я должен добавить, что, возможно, я использую не Canonical Ubuntu, а форк, известный как Mint: - /.

3
задан 26 December 2017 в 03:56

2 ответа

GEdit (и Libreoffice) не являются правильными инструментами для этого.

Если я понимаю Вас правильный, то Вы хотите преобразовать

123456\n

в

123456

Используйте Perl, например:

perl -pe 'chomp' your_input_file.txt > without_newlines.txt

Обновите входной файл, выпущенный, чтобы не иметь только разрывов строки, но также и символа продолжения строки \ в конце, т.е.:

2.7182818284590452353602874713526624977572470936999595749669676277240766\
303535475945713821785251664274274663919320030599218174135966290435729003342952\
605956307381323286279434907632338298807531952510190115738341879307021540891499\
348841675092447614606680822648001684774118537423454424371075390777449920695517\
...

Для удаления их (а также разрывы строки), следующая команда сделает:

perl -pe 'chomp; s/\\//;' your_input_file.txt > without_newlines.txt
4
ответ дан 1 December 2019 в 13:11

По моему скромному мнению, правильный способ сделать это должно избежать вставки копии текст в целом путем записи maxima вывод непосредственно в файл:

x:bfloat(%e),fpprec:1000000$
stringout("my_big_number.txt",x);

$ вместо ; в первом выражении просто подавляет - довольно большой - консольный вывод.

Можно подтвердить, что в использовании выходного файла нет никаких дополнительных новых строк wc:

$ wc my_big_number.txt
      2       1 1000006 my_big_number.txt

(на самом деле с тех пор существует одна дополнительная новая строка stringout кажется, вставляет единственную пустую строку перед выводом; однако нет ни одного в самом числовом выводе).

Можно затем преобразовать текстовый файл в то, чего другого формата Вы желаете - так как Вам установили LibreOffice, с помощью его автономных фильтров преобразования:

$ libreoffice --convert-to pdf my_big_number.txt
$ xdg-open my_big_number.pdf 

Кроме того, Вы могли использовать LO unoconv утилита командной строки:

$ unoconv -f pdf my_big_number.txt 

Посмотрите, например, Как преобразовать TXT в PDF?

5
ответ дан 1 December 2019 в 13:11

Другие вопросы по тегам:

Похожие вопросы: