用FS(awk)分隔字符串的所有字符

lqd*_*000 3 awk printf

我虽然这是一个简单的任务,但不是!

输入(管道分隔):

record1|ABCDEFGH
record2|IJKLMNOP
Run Code Online (Sandbox Code Playgroud)

我需要这个输出:

record1|A|B|C|D|E|F|G|H
record2|I|J|K|L|M|N|O|P
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试了什么:

awk 'BEGIN{FS=OFS="|"}{a = split($2, b, ""); for(i=1; i<=a; i++){printf("%s|%s, $1, b[i](i==a? "\n":"|"))}}' input
Run Code Online (Sandbox Code Playgroud)

我得到:

record1|A
record1|B
record1|C
...
Run Code Online (Sandbox Code Playgroud)

我不明白!如果有人能向我解释......

Ste*_*eve 6

这是另一种使用方式awk:

awk -F '|' '{ gsub(/./, FS "&", $2) }1' OFS= file
Run Code Online (Sandbox Code Playgroud)

结果:

record1|A|B|C|D|E|F|G|H
record2|I|J|K|L|M|N|O|P
Run Code Online (Sandbox Code Playgroud)