我希望能够生成大量的数字(例如,Napier 常数的前一百万个小数位),然后将该数字保存在文本文件中而不带任何换行符。
不过,我似乎无法在 GEdit 或 LibreOffice Writer 中执行此操作。我在终端上使用 Maxima 生成数字,但它们输出时带有换行符。
我要么需要找到一种方法来生成没有换行符的数字,要么找到一个文本编辑器,可以处理从包含数百万位数字的大数字中删除换行符(我可以毫无问题地从包含数千位数字的数字中删除换行符)。
我使用下面的终端语法生成 Napier 常数的前一百万个十进制数字,然后将这些数字复制并粘贴到文本编辑器中(删除 \\ 和 \n)。
sudo apt-get install wxmaxima
maxima
bfloat(%e),fpprec:1000000;
当我尝试复制并粘贴到 GEdit 中,然后删除换行符时,我可以将数字全部放在一行上,但数字不会显示。由于 GEdit 可以成功删除换行符并显示 1000 位数字,但不能显示一百万位数字,我想知道这是否是内存问题。但是,当我尝试将文件保存为 TXT 然后在 LibreOffice 中打开它时,它仍然包含换行符。LibreOffice 似乎根本无法删除换行符,即使我直接从终端复制和粘贴也是如此。
我可能应该补充一点,我使用的不是 Canonical Ubuntu,而是 Mint :-/ 。
答案1
我认为正确的做法是避免复制粘贴文本,而是将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
答案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