进击云原生

V1

2022/02/12阅读:47主题:默认主题

使用 Linux fold 命令使文本更具可读性

使用Linux fold命令使文本更具可读性

在Linux中,fold命令可以将显示宽度大于显示器宽度的文本换行。

fold接受多行文本,并根据您提供的参数将它们分解为块。如果没有参数,fold将在80个字符时断行。

下面的第一个示例使用了包含字符位置指示的单行文本文件。

首先,我们使用wc -c和wc -l命令计算文件中的字符数和行数:

$ wc -c wide_text
251 wide_text
$ wc -l wide_text
1 wide_text

因此,这个文件有251个字符(包括一个回车)和一行文本。接下来,我们使用cat命令显示文件:

$ cat wide_text
.........1.........2.........3.........4.........5.........6.........7.........8.........9........10........11........12........13........14........15........16........17........18........19........20........21........22........23........24........25

然后我们使用fold命令将文件分成几行:

$ fold wide_text
.........1.........2.........3.........4.........5.........6.........7.........8
.........9........10........11........12........13........14........15........16
........17........18........19........20........21........22........23........24
........25

在上面的例子中,一个250个字符的行被传递给fold命令,它生成4行文本~3行包含80个字符,第4行包含10个字符。

然而,fold命令提供了-c (characters)选项来将行分割成更大或更小的块。在下面的例子中,我们将wide_text文件内容分成50个字符的块。

$ fold -c50 wide_text
.........1.........2.........3.........4.........5
.........6.........7.........8.........9........10
........11........12........13........14........15
........16........17........18........19........20
........21........22........23........24........25

折叠文本和创建一个新文件也很容易:

$ fold -c50 wide_text folded_text
$ wc -l folded_text; wc -c folded_text
5 folded_text
255 folded_text

folded_text文件包含5行文本和255个字符。

还可以使用-b选项按字节而不是字符折叠行。在某些情况下,这会改变输出。

现在让我们看一个更现实的例子,在这个例子中,我们将一个文本文件分割成更合理的行以供查看。

首先,要查看文件中每行有多少个字符,我们使用如下所示的脚本。顶部的两个if命令检查是否提供了文件名以及指定的文件是否存在。底部的while命令显示文件中每行的长度。

#!/bin/bash

#
 check for an argument
if [ $# -eq 0 ]; then
    echo -n  "file: "
    read file
else
    file=$1
fi

#
 make sure the file exists or exit
if [ ! -f $file ]; then
    echo "ERROR: cannot find $file"
    exit 1
fi

$
 count characters in each line
while read line; do
    echo $line | wc -c
done < $file

该脚本显示文件中每一行的长度,显然比在终端窗口中显示的长度要长,因此它是折叠的一个很好的候选对象。

$ chars-per-line Lorem_ipsum | head -6
7
137
149
153
154
35

如果我们将这个文件分解成80个字符行,我们可能会看到类似下面的例子,使用几个世纪前的“Lorem ipsum”文本:

$ fold Lorem_ipsum
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor i
ncididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostru
d exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aut
e irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat n
ulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
 officia deserunt mollit anim id est laborum.

从上面的例子中可以看出,在固定位置断开文本文件并不是一个好的选择,因为它可能会将一些单词拆分成两部分。

当我们添加-s(在空格处换行)选项时,我们得到了一个更有用的文本渲染:

$ fold -s Lorem_ipsum
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.

注意:当使用fold命令折叠文本文件时,文本文件会稍微大一些,因为它们将包含更多的换行符(回车)字符。

总结

当您希望将文本段落转换为没有那么多字符和在单词边界上断行的单独行时,fold命令可能非常有用。

关注

本文首发于微信公众号【我的小碗汤】,扫码关注,了解更多咨询,更有免费资源供您学习

扫码关注,加群学习
扫码关注,加群学习

分类:

后端

标签:

后端

作者介绍

进击云原生
V1

公众号:进击云原生