如何用 words/characters 将一行分成 2 行?
How can I split a line in 2 by words/characters?
我要转换:
Hello Hello Hi Hello Hello Hi Hi Hi Hi Hello
进入:
Hello Hello Hi Hello
Hello Hi Hi Hi Hi Hello
我想将一行分成 2 行,让它们具有尽可能接近的字符数,而不切断一个单词。
我想我可能可以用 wc -w
、wc -c
、cut
、and/or awk
,但也许你们可以提供一些更好的想法!
这可能是 fold
的工作,一个方便的换行工具:
$ s="Hello Hello Hi Hello Hello Hi Hi Hi Hi Hello"
$ fold -w $(( ${#s} / 2 + 1)) -s <<< "$s"
Hello Hello Hi Hello
Hello Hi Hi Hi Hi Hello
这使用 fold
将每行换行到给定的长度。我们如何计算长度?只需使用 ${#variable}
并除以 2(+1 以防止在长度为奇数时得到三行)。然后我们使用 -s
来防止断词。
来自man fold
:
fold - wrap each input line to fit in specified width
-s, --spaces
break at spaces
-w, --width=WIDTH
use WIDTH columns instead of 80
我要转换:
Hello Hello Hi Hello Hello Hi Hi Hi Hi Hello
进入:
Hello Hello Hi Hello
Hello Hi Hi Hi Hi Hello
我想将一行分成 2 行,让它们具有尽可能接近的字符数,而不切断一个单词。
我想我可能可以用 wc -w
、wc -c
、cut
、and/or awk
,但也许你们可以提供一些更好的想法!
这可能是 fold
的工作,一个方便的换行工具:
$ s="Hello Hello Hi Hello Hello Hi Hi Hi Hi Hello"
$ fold -w $(( ${#s} / 2 + 1)) -s <<< "$s"
Hello Hello Hi Hello
Hello Hi Hi Hi Hi Hello
这使用 fold
将每行换行到给定的长度。我们如何计算长度?只需使用 ${#variable}
并除以 2(+1 以防止在长度为奇数时得到三行)。然后我们使用 -s
来防止断词。
来自man fold
:
fold - wrap each input line to fit in specified width
-s, --spaces
break at spaces
-w, --width=WIDTH
use WIDTH columns instead of 80