行の長さがn文字未満の場合は改行文字を削除する方法

行の長さがn文字未満の場合は改行文字を削除する方法

行に文字未満がある場合は、その行を次の行に関連付ける必要があります。

答え1

GNU sedの使用

入力する

flood
good
good
good
good
good
flood
good
good

新しく結合された行を文字数に含めたい場合

sed ':;/.\{5,\}$/!{N;s/\n/ /g;b}'

flood
good good
good good
good flood
good good
good

各行を個別に計算し、前の行よりも小さい各行を連結する場合

sed ':;/[^\n]\{5,\}$/!{N;$!b};s/\n/ /g'

flood
good good good good good flood
good good good

答え2

$ n=20
$ seq 40 | sed -e :1 -e "/.\{$n\}/!{N;s/\n//;b1" -e '}'
123456789101112131415
16171819202122232425
26272829303132333435
3637383940

または線を接続してに従って20文字(少なくとも20文字の代わりに):

$ seq 40 | fmt -w 20
1 2 3 4 5 6 7 8
9 10 11 12 13 14
15 16 17 18 19 20
21 22 23 24 25 26
27 28 29 30 31 32
33 34 35 36 37 38
39 40

$ seq 40 | par -w20
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
32 33 34 35 36 37 38
39 40

関連情報