如何仅在 sed 中填充字符

Mir*_*age 1 sed

我有这个文件。我只想使用 sed,没有 awk

FSDFDSFSD
FDSFD
FHGDHFDHGHFGHGHGF
HHGDF
GFDGDFGFDG
GFDGFDGFDGDFGDGD
Run Code Online (Sandbox Code Playgroud)

我想用 000 填充每个奇数行,以便每行的总字符数为 30

我想要输出像

FSDFDSFSD0000000000
FDSFD
FHGDHFDHGHFGHGHGF00
HHGDF
GFDGDFGFDG000000000
GFDGFDGFDGDFGDGD
Run Code Online (Sandbox Code Playgroud)

Gur*_*uru 6

单程:

sed -e :a -e 's/^.\{1,29\}$/&0/;ta' -e n file
Run Code Online (Sandbox Code Playgroud)

匹配任意字符(.),匹配1到29个相同类型的字符(1,29)。如果匹配成功,在匹配的模式后面放一个“0”( &)。当匹配失败时,这意味着当不包括第一个字符的字符数超过 29 时,停止它,因此我们得到用 30 填充的字符串零。

n最后简单地读取下一行并打印出来。这样,偶数行就会原封不动地打印出来。

执行上面的脚本:

$ sed -e :a -e 's/^.\{1,29\}$/&0/;ta' -e n file
FSDFDSFSD000000000000000000000
FDSFD
FHGDHFDHGHFGHGHGF0000000000000
HHGDF
GFDGDFGFDG00000000000000000000
GFDGFDGFDGDFGDGD
Run Code Online (Sandbox Code Playgroud)