我正在从 pdf 中复制文本,当我将其粘贴到文本编辑器中时,结果如下:
文本没有延伸到右边距,但看起来像一列,并且行与行之间有一个空格。我希望文本延伸到右边距,并且行与行之间没有空格。我可以手动格式化它,但这非常耗时。有没有一个程序可以让我自动执行此操作?
答案1
grep .
删除所有空白行。您可以将结果通过管道传输到fmt
将文本重新格式化为您选择的宽度。如果 X 剪贴板中有文本,xsel -b
将从那里获取它。
xsel -b | grep . | fmt -w 80 >reformatted.txt
如果您根本不想换行,可以用空格替换换行符,但在末尾添加换行符。
xsel -b | grep . | tr '\n' ' '; echo
输出不会很好,因为根据你的图像,连字符丢失了,所以“vul-/gar”输出为“vul gar”,“Thanks-/giving”输出为“Thanksgiving”,等等。
grep .
将所有段落合并为一个段落。仅当有某种方式在文本中标记段落时,您才能避免这种情况。如果同一段落的行之间有一个空行,并且段落之间至少有两个空行,则可以删除换行符并保留段落分隔符,如下所示:
awk 'length {if (previous < NR-2) print ""; previous = NR; print}'
你可以尝试跑步pdftotext
直接在 PDF 上。这不会重新格式化文本,并且可能包含也可能不包含空行(这取决于 PDF 的制作方式)。
答案2
你能行的:
awk -v RS=$'\n\n' -v ORS=" " '1 { print; }' file | fold