如果行字符数少于 x 个字符,我需要将该行与下一行连接起来。
答案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