如何用字/字符分割2行?

时间:2015-03-31 21:14:49

标签: string bash awk cut wc

我想转换:

Hello Hello Hi Hello Hello Hi Hi Hi Hi Hello

分为:

Hello Hello Hi Hello
Hello Hi Hi Hi Hi Hello

我想在2中分割一行,让它们具有尽可能最接近的字符数,而不会切断单词。

我想我可以用wc -wwc -ccut和/或awk来做,但也许你们可以提供一些更好的想法!

1 个答案:

答案 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