在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))
}
}
我有几个这样的文件,其中包含 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))
}
}