我想在大文本文件中的每個第80個字符之前的最近的空白字符處插入換行符,該文本讀取爲單行文本。在每隔80個字符之前用最近的空白字符分隔換行文件char
我能想到我怎麼可能分裂文件使用類似正是分裂在每一個80字符:
sed -ri "s/.\{80\}/&\n/g" file.txt
,然後再通,並把每一個有一個字符開始排隊與之前合併
sed -ri '/[^ ]$/N;s/^(.*) ([^ ]*)\n/\1\n\2/' file.txt
但是這似乎有點尷尬,幾乎可以肯定不必要的,因爲我相信有可能是:如果它恰好結束在非空白字符和分裂在之前的換行字符的東西,如過去的空格字符線一個更清潔的方式來管理這樣的問在bash中。
噢,文件中有很多單個破折號連字符被空間包圍,所以我想要避免在任何緊接着或之前是單個破折號的空間上進行拆分。
請更新您的問題,以提供一些類似於您的真實數據的示例數據。它允許快速測試解決方案。 – 2014-09-24 15:47:42
它看起來非常類似於[如何使用unix命令將字符串拆分爲具有特定寬度的行?當輸入字符串是無限的?](http://stackoverflow.com/questions/25604673/how-can-i-split-string-to-lines-with-specific-width-using-unix-commands-when-th/25604803#25604803) - >'fold -w 80 -s file' – fedorqui 2014-09-24 15:51:12
@fedorqui那只是問題的第一部分。還有第二部分是從'開始,然後通過並帶來每條線......',這是我無法清楚地遵循的。 – 2014-09-24 15:51:50