我想轉換:如何以字/字符分隔2行?
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
來做,但也許你們可以提供一些更好的點子!
我想轉換:如何以字/字符分隔2行?
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
來做,但也許你們可以提供一些更好的點子!
這可以是fold
工作,一個方便的util的包裝線:
$ 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
完美,謝謝你,我會考慮摺疊,我從來沒有聽說過它! 出於好奇,它在Linux發行版中是否便攜和/或頻繁? – TuxForLife 2015-03-31 22:17:14
我不知道它是多麼便攜,但例如我甚至可以在cygwin中找到它。所以看起來好像很多。 – fedorqui 2015-03-31 22:37:31
您應該意識到'fold'摺疊_bytes_而不是_characters_。 – 2015-03-31 22:38:21
上AskUbuntu這個問題是交叉貼:http://askubuntu.com/questions/603739/how-can-i-split-a-line-in-2- by-words-characters-bash-regex – John1024 2015-03-31 21:26:57
這不是正則表達式的東西,至少不是純粹的表達式。你最好用空格分割,計算單詞的總數,找到最接近原始字符串中間點的空間(顯然,用換行符替換它)。不知道多麼友好的awk將與此,雖然... – Sam 2015-03-31 21:27:36
嗨約翰,這是違反規則要求在這兩個地點? 我很抱歉,如果是這樣,但我已經做了幾次,這對我有用,因爲有時候,它沒有在其中一個站點回答,並在另一個站點回答。 – TuxForLife 2015-03-31 22:15:46