我有几个这样的文件包含1行:
CHTACAUSYDUYADUSAYUDYASUDYUASYDUADSYAUDYSUAYDUASDUBASUDASUBDYUASYUCJUAYAYCYUAUAHUAHUHAUHDIADJIOAJDIAHDUADIAJDOJADIJAHUDHAA
我需要将它分成几行,每行添加1个字符:
CHTACAUSYDUYAD
CHTACAUSYDUYADU
CHTACAUSYDUYADUY
CHTACAUSYDUYADUYA
CHTACAUSYDUYADUYAD
我正在尝试使用此awk代码:
more +2 file | awk '
{
split($0, chars, "")
for (i=1; i <= length($0); i++) {
printf("%s\n", chars[i])
}
}'
但每行仅打印1个字符。 有人能帮助我吗?
答案 0 :(得分:4)
问题出现在split
中 - 这会破坏你的字符串与空的正则表达式。所以你需要substr
代替:
substr(s,i [,n])返回从i开始的s的最多n个字符的子字符串。如果省略n,则使用s的其余部分。
第一行生成的标准不是很清楚,但让我假设它是由初始长度= 15
完成的{
initial = 15
for (i=initial; i <= length($0); ++i) {
printf("%s\n", substr($0, 1, i))
}
}