我虽然这是一个简单的任务,但不是!
输入(管道分隔):
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)
我不明白!如果有人能向我解释......
这是另一种使用方式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)