如何编写 sed one-liner 以在每三个字符后添加一个字符?

ixt*_*lix 10 sed text-processing

所以,我有一个看起来像这样的字符串:

AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA
Run Code Online (Sandbox Code Playgroud)

我想将字符串拆分为由 '+' 符号分隔的 3 个字符的块。

AUG+GCC+AUG+GCG+CCC+AGA+ACU+GAG+AUC+AAU+AGU+ACC+CGU+AUU+AAC+GGG+UGA
Run Code Online (Sandbox Code Playgroud)

我想和我的好朋友一起做sed

我试过

cat codons | sed -r 's/([A-Z]\{3\})/\1\+/g'
Run Code Online (Sandbox Code Playgroud)

……没有成功。

sed可以使用什么命令?

Sté*_*las 16

由于您不想要尾随+,您可以这样做:

fold -w3 | paste -sd+ -
Run Code Online (Sandbox Code Playgroud)

也就是说,字符idthfold上的行,以及那 3 行以它们为elves 的字符行作为分隔符,这实际上就像将除最后一个之外的每个换行符都更改为. 如果输入有多于一行,你最终会得到那些用 a 连接的行,这可能是也可能不是你想要的。3wpastes+d++

如果您确实需要它sed,则可以在以下+之后删除尾随:

sed 's/.../&+/g;s/+$//'
Run Code Online (Sandbox Code Playgroud)


rus*_*ush 12

sed 's/.../&+/g'
Run Code Online (Sandbox Code Playgroud)

为了让你的方式工作,你不需要转义{}符号:

sed -r 's/([A-Z]{3})/\1+/g'
Run Code Online (Sandbox Code Playgroud)