我不想将表格数据转换为像标准 awk 配方那样的漂亮列。我想要将一些很长的文本格式化为像报纸专栏一样的专栏。
例如转
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris tempus orci ut odio tincidunt, vel hendrerit ante viverra. Aenean mollis ex erat, ac commodo lectus scelerisque eget. Aenean sit amet purus felis. Aenean sit amet erat eget velit lobortis fermentum eget eget odio. Donec tincidunt rutrum varius. Nunc viverra ac erat id bibendum. Aenean sit amet venenatis arcu. Morbi enim enim, pulvinar sed velit in, sollicitudin tristique urna. In auctor ex vel diam sagittis, at placerat lacus sollicitudin. Sed a arcu dignissim, sodales odio ac, congue ante. Mauris posuere lorem varius tempor tincidunt. Etiam non metus ac nibh vulputate semper. Proin dapibus ullamcorper tortor, sed ultricies est euismod vel. Aliquam erat volutpat.
Phasellus at sem ornare, suscipit leo in, bibendum nulla. Sed fermentum enim id est feugiat, in commodo lectus fermentum. Sed quis volutpat felis. Donec turpis felis, dignissim vel mollis nec, pellentesque non odio. Aenean vitae sagittis libero, vel egestas diam. Nullam ornare purus quis eros euismod, viverra pretium turpis rhoncus. Etiam sagittis lorem non nisi molestie, ut dictum risus rhoncus.
进入
Lorem ipsum varius. Nunc non metus ac vel mollis nec,
dolor sit amet, viverra ac erat id nibh vulputate pellentesque
consectetur bibendum. Aenean semper. Proin non odio. Aenean
adipiscing sit amet venenatis dapibus ullamcorper vitae sagittis
elit. Mauris arcu. Morbi enim tortor, sed libero, vel egestas
tempus orci ut enim, pulvinar ultricies diam. Nullam ornare
odio tincidunt, sed velit in, est euismod purus quis eros
vel hendrerit ante sollicitudin vel. Aliquam erat euismod, viverra
viverra. Aenean tristique urna. In volutpat. pretium turpis
mollis ex erat, auctor ex vel rhoncus. Etiam
ac commodo lectus diam sagittis, Phasellus at sagittis lorem non
scelerisque at placerat lacus sem ornare, nisi molestie,
eget. Aenean sollicitudin. Sed suscipit leo in, ut dictum risus
sit amet purus a arcu dignissim, bibendum nulla. Sed rhoncus.
felis. Aenean sit sodales odio ac, fermentum enim
amet erat eget congue ante. Mauris id est feugiat,
velit lobortis posuere lorem in commodo lectus
fermentum eget varius tempor fermentum. Sed
eget odio. Donec tincidunt. Etiam quis volutpat
tincidunt rutrum felis. Donec turpis
felis, dignissim
\n
在宽度填满后,它也需要双倍“分页” 。
答案1
您可以使用fold
来分解文本,然后将其提供给pr
.两者很可能在您的系统中可用。
如果这是文件lorem.txt
:
Lorem ipsum dolor sat amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut Labore et dolore magna aliqua。整数malesuada nunc vel risus commodo viverra maecenas accumsan lacus。 Nec feugiat nisl pretium fusce id velit ut tortor pretium。 Lacus sed turpis Tincidunt id。 Nibh 坐在 amet commodo nulla facilisi。 In metus vulputate eu scelerisque felis。 Id nibh totortor id aliquet。
$ fold -w 20 -s lorem.txt | pr -3
2020-06-25 16:41 Page 1
Lorem ipsum dolor Integer malesuada turpis tincidunt
sit amet, nunc vel risus id. Nibh sit amet
consectetur commodo viverra commodo nulla
adipiscing elit, maecenas accumsan facilisi. In metus
sed do eiusmod lacus. Nec feugiat vulputate eu
tempor incididunt nisl pretium fusce scelerisque felis.
ut labore et dolore id velit ut tortor Id nibh tortor id
magna aliqua. pretium. Lacus sed aliquet.
答案2
您可以使用fmt
将段落格式设置为所需的列宽,然后pr
排列列。两者都是 POSIX 实用程序,尽管 GNU 版本比 POSIX 最低版本有更多选项。
我不明白你想如何平衡列,但这应该可以帮助你开始:
fmt -w 20 | pr -4 -t -w 80
输出:
Lorem ipsum tincidunt rutrum tincidunt. Etiam fermentum. Sed
dolor sit amet, varius. Nunc non metus ac quis volutpat
consectetur viverra ac erat id nibh vulputate felis. Donec turpis
adipiscing bibendum. Aenean semper. Proin felis, dignissim
elit. Mauris sit amet venenatis dapibus ullamcorper vel mollis nec,
tempus orci ut arcu. Morbi enim tortor, sed pellentesque
odio tincidunt, enim, pulvinar ultricies non odio. Aenean
vel hendrerit ante sed velit in, est euismod vitae sagittis
viverra. Aenean sollicitudin vel. Aliquam erat libero, vel egestas
mollis ex erat, tristique urna. In volutpat. diam. Nullam ornare
ac commodo lectus auctor ex vel purus quis eros
scelerisque diam sagittis, Phasellus at euismod, viverra
eget. Aenean at placerat lacus sem ornare, pretium turpis
sit amet purus sollicitudin. Sed suscipit leo in, rhoncus. Etiam
felis. Aenean sit a arcu dignissim, bibendum nulla. Sed sagittis lorem non
amet erat eget sodales odio ac, fermentum enim nisi molestie,
velit lobortis congue ante. Mauris id est feugiat, ut dictum risus
fermentum eget posuere lorem in commodo lectus rhoncus.
eget odio. Donec varius tempor
答案3
当前的两个答案都使用pr
, 但column
也有效:
$ fold -w 20 -s lorem.txt | column
Lorem ipsum dolor enim, pulvinar sed ornare, suscipit
sit amet, velit in, leo in, bibendum
consectetur sollicitudin nulla. Sed
adipiscing elit. tristique urna. In fermentum enim id
Mauris tempus orci auctor ex vel diam est feugiat, in
ut odio tincidunt, sagittis, at commodo lectus
vel hendrerit ante placerat lacus fermentum. Sed quis
viverra. Aenean sollicitudin. Sed a volutpat felis.
mollis ex erat, ac arcu dignissim, Donec turpis felis,
commodo lectus sodales odio ac, dignissim vel
scelerisque eget. congue ante. Mauris mollis nec,
Aenean sit amet posuere lorem pellentesque non
purus felis. Aenean varius tempor odio. Aenean vitae
sit amet erat eget tincidunt. Etiam sagittis libero,
velit lobortis non metus ac nibh vel egestas diam.
fermentum eget eget vulputate semper. Nullam ornare purus
odio. Donec Proin dapibus quis eros euismod,
tincidunt rutrum ullamcorper tortor, viverra pretium
varius. Nunc sed ultricies est turpis rhoncus.
viverra ac erat id euismod vel. Etiam sagittis
bibendum. Aenean Aliquam erat lorem non nisi
sit amet venenatis volutpat. molestie, ut dictum
arcu. Morbi enim Phasellus at sem risus rhoncus.
默认情况下,它将放置适合当前终端宽度的尽可能多的列。您可以使用-c
/指定不同的宽度--output-width
。