如果行字符数少于 n 个字符,如何删除换行符

如果行字符数少于 n 个字符,如何删除换行符

如果行字符数少于 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

相关内容