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

Tux*_*ife 1 string bash awk cut wc

我想转换:

Hello Hello Hi Hello Hello Hi Hi Hi Hi Hello
Run Code Online (Sandbox Code Playgroud)

成:

Hello Hello Hi Hello
Hello Hi Hi Hi Hi Hello
Run Code Online (Sandbox Code Playgroud)

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

我想我也许可以与做到这一点wc -w,wc -c,cut,和/或awk,但也许你们能提供一些更好的想法!

fed*_*qui 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
Run Code Online (Sandbox Code Playgroud)

这用于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
Run Code Online (Sandbox Code Playgroud)

  • 不,"fold"在屏幕列上折叠,既不是字符也不是字节(例如,标签可以是多列,退格字符将计为-1列位置).但是,如果给出`-b`参数,它可以在字节上折叠.`fold`是一个核心的UNIX工具,比如grep,sed,tr等,所以应该随处可用. (3认同)
  • 我不知道它有多便携,但是例如我甚至可以在cygwin中找到它.所以它看起来非常多. (2认同)