转置文本文件中的数据



我有一个格式为以下的文本文件:

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

最新更新