如何删除大数字中的换行符?

如何删除大数字中的换行符?

我希望能够生成大量的数字(例如,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 

例如如何将 TXT 转换为 PDF?

答案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

相关内容