我想转换:
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
和/或awk
来做,但也许你们可以提供一些更好的想法!
答案 0 :(得分:10)
这可以是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