我有一个包含大量列(基本上是数千套三个)的文件,最后有三个特殊列(Chr
和Position
和Name
)。 / p>
我想将这三个最后一列移到文件的前面,这样这些列就会变成Name Chr Position
,然后文件继续三重奏。
我认为awk
可能会有这种情况,但我对awk
的工作方式不太了解!
示例输入:
Gene1.GType Gene1.X Gene1.Y ....ending in GeneN.Y Chr Position Name
期望的输出:
Name Chr Position (Gene1.GType Gene1.X Gene1.Y ) x n samples
答案 0 :(得分:1)
我认为下面的例子或多或少会做你想要的。
$ cat file
A B C D E F G Chr Position Name
1 2 3 4 5 6 7 8 9 10
$ cat process.awk
{
printf $(NF-2)" "$(NF-1)" "$NF
for( i=1; i<NF-2; i++)
{
printf " "$i
}
print " "
}
$ awk -f process.awk file
Chr Position Name A B C D E F G
8 9 10 1 2 3 4 5 6 7
NF
中的 awk
表示一行中的字段数。
答案 1 :(得分:0)
一个班轮:
awk '{ Chr=$(NF-2) ; Position=$(NF-1) ; Name=$NF ; $(NF-2)=$(NF-1)=$NF="" ; print Name, Chr, Position, $0 }' file