如何自动换行,像 man 的输出一样对齐文本?

cod*_*ody 5 man text

什么是自动换行并对齐文本文件以使输出看起来像手册页的命令:

   All of these system  calls  are  used  to  wait  for  state
   changes  in  a  child  of  the  calling process, and obtain
   information about the child whose  state  has  changed.   A
   state change is considered to be: the child terminated; the
   child was stopped by a signal; or the child was resumed  by
   a  signal.  In the case of a terminated child, performing a
   wait allows the system to release the resources  associated
   with the child; if a wait is not performed, then the termi-
   nated child remains in a "zombie" state (see NOTES below).
Run Code Online (Sandbox Code Playgroud)

dai*_*isy 5

使用fold命令指定允许的最大宽度:

perl -e 'print "a"x5, " " for 1..99' | fold -w 30

你得到:(而不是一行)

aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa aaaaa 
aaaaa aaaaa aaaaa aaaaa 
Run Code Online (Sandbox Code Playgroud)

  • 值得一提的是,你必须告诉“fold”在空格处换行(使用“-s”),否则它不会尊重单词,而只是在给定的宽度处换行。例如,尝试`fold -s -w 72 test_docu.txt | cat` (或将 `cat` 替换为 `less`,或您喜欢的任何内容)。至于你的(@cody)问题的手册页部分:你可以使用“whereis”找到一个手册页,然后在编辑器中打开它(如果你的是“.gz”,则不需要“gunzip”)就像我的一样)。然后您将看到 groff 语法,并且可以很快掌握。你会得到诸如连字、表格等内容。 (3认同)

Ton*_*nny 4

那就是格罗夫。
(较旧的 Unix 版本使用 NROFF 或 TROFF,但它们都是同一系列中的不同程序。)

请注意,这不是一个对文本文件进行操作的简单命令。它需要在文本中插入格式说明。
事实上,它的运行方式更像是一个编译器。
如果您熟悉 TeX 或 LaTeX,那么您就知道其原理,但是各种 ROFF 风格的程序都有更简单的命令语言。