如何按单词/字符将一行分成两行?(Bash)(正则表达式)

如何按单词/字符将一行分成两行?(Bash)(正则表达式)

我想转换:

Hello Hello Hi Hello Hello Hi Hi Hi Hi Hello

到:

Hello Hello Hi Hello
Hello Hi Hi Hi Hi Hello

我想将一行拆分成两行,方法是让它们具有尽可能最接近的字符数,而不会截断一个单词。

我想我可以使用 wc -w、wc -c、cut 和/或 awk 来完成它,但也许你们可以提供一些更好的想法!

答案1

您没有提供更多信息,因此我假设您将字符串放在名为 的变量中YOUR_STRING。这可以轻松适应处理文件等。

首先确定字符串长度的一半,然后加 1(否则最终会得到 3 行而不是 2 行):

CHARS=$((`echo $YOUR_STRING | wc -c` /2 + 1))

接下来,使用fold命令来换行:

echo $YOUR_STRING | fold -sw $CHARS

结果:

Hello Hello Hi Hello 
Hello Hi Hi Hi Hi Hello

请参阅man fold以了解更多信息。

相关内容