在awk中将一个字符串拆分成一堆行

Split a string into a bunch of lines in awk

我有几个这样的文件,其中包含 1 行:

CHTACAUSYDUYADUSAYUDYASUDYUASYDUADSYAUDYSUAYDUASDUBASUDASUBDYUASYUCJUAYAYCYUAUAHUAHUHAUHDIADJIOAJDIAHDUADIAJDOJADIJAHUDHAA

我需要将它分成几行,每行添加 1 个字符:

CHTACAUSYDUYAD
CHTACAUSYDUYADU
CHTACAUSYDUYADUY
CHTACAUSYDUYADUYA
CHTACAUSYDUYADUYAD

我正在尝试使用这个 awk 代码:

more +2 file | awk '
{ 
    split([=12=], chars, "")
    for (i=1; i <= length([=12=]); i++) {
        printf("%s\n", chars[i])
    }
}'

但它每行只打印 1 个字符。 有人可以帮助我吗?

看起来问题出在 split - 这会破坏您的字符串与空正则表达式的关系。所以你需要 substr 代替:

substr(s, i [, n]) Return the at most n-character substring of s starting at i. If n is omitted, use the rest of s.

第一行生成的标准不是很清楚,但让我假设它是由 initial length = 15

完成的
{
    initial = 15
    for (i=initial; i <= length([=10=]); ++i) {
        printf("%s\n", substr([=10=], 1, i))
    }
}