使用linux命令

时间:2015-09-29 17:55:03

标签: python linux awk transpose

我希望将文件从宽格式转换为长格式,最好使用linux语句或python语句。 我的输入数据看起来像这样:

   head1 M1 M2 M3 M4 M5 M6 M7
   abcd A B C D E F G
   efgh A B C D E F G
   ijkl A B C D E F G

并希望输出如下:

   abcd A
   abcd B
   abcd C
   abcd E
   abcd F
   abcd G
   efgh A
   efgh B
   efgh C
   ...

是否可以这样做,我遇到了R代码,但由于文件非常大,我宁愿避免使用它?

谢谢

1 个答案:

答案 0 :(得分:1)

要求救援!

$ awk '{for(i=2;i<=NF;i++) print $1,$i}' file
head1 M1
head1 M2
head1 M3
head1 M4
head1 M5
head1 M6
head1 M7
abcd A
abcd B
abcd C
abcd D
abcd E
abcd F
abcd G
efgh A
efgh B
...

如果您想跳过标题

$ awk 'NR>1{for(i=2;i<=NF;i++) print $1,$i}' file