我有一个格式为以下的文本文件:
Name: John
Age: 25
Location: CA
Name: Mac
Age: 24
Location: CA
Name: Patrick
Age: 25
Location: CA
Name: Christian
Age: 25
Location: CA
我寻求帮助来使用 Perl 或 awk 转置数据。
Name Age Location
John 25 CA
Mac 24 CA
Patrick 25 CA
Christian 25 CA
如果有人能帮助我,我将不胜感激。
在寻找这个吗?
kent$ awk -F'n|: ' -v RS="" 'NR==1{print $1,$3,$5}{print $2,$4,$6}' file
Name Age Location
John 25 CA
Mac 24 CA
Patrick 25 CA
Christian 25 CA
如果要让输出看起来更漂亮,请将输出通过管道传输到|column -t
(值不包含空格)或在 awk 中使用printf
。
kent$ awk -F'n|: ' -v RS="" 'NR==1{print $1,$3,$5}{print $2,$4,$6}' f|column -t
Name Age Location
John 25 CA
Mac 24 CA
Patrick 25 CA
Christian 25 CA
perl -00 -nE 'say join"t", /^(w+)/mg if $. ==1;say join"t", /(w+)$/mg' file
输出
Name Age Location
John 25 CA
Mac 24 CA
Patrick 25 CA
Christian 25 CA
使用 awk
:
awk 'BEGIN {print "Name","Age","Location"} {print $2,$4,$6}' RS= file
Name Age Location
John 25 CA
Mac 24 CA
Patrick 25 CA
Christian 25 CA