Sorting 将列从文件的后面移到前面
我有一个文件,有很多列(基本上是几千组三列),最后有三个特殊列(Sorting 将列从文件的后面移到前面,sorting,awk,Sorting,Awk,我有一个文件,有很多列(基本上是几千组三列),最后有三个特殊列(Chr和Position和Name) 我想将最后三列移到文件的前面,使这些列成为Name Chr Position,然后文件继续使用这三个列 我认为这在awk中是可能的,但我对awk的工作原理知之甚少 样本输入: Gene1.GType Gene1.X Gene1.Y ....ending in GeneN.Y Chr Position Name 期望输出: Name Chr Po
Chr
和Position
和Name
)
我想将最后三列移到文件的前面,使这些列成为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
我认为下面的例子或多或少满足了您的需求
$ 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
$cat文件
A B C D E F G Chr职位名称
1 2 3 4 5 6 7 8 9 10
$cat process.awk
{
printf$(NF-2)“$(NF-1)”“$NF
对于(i=1;i一个线性:
awk '{ Chr=$(NF-2) ; Position=$(NF-1) ; Name=$NF ; $(NF-2)=$(NF-1)=$NF="" ; print Name, Chr, Position, $0 }' file
请提供一些输入和输出示例,我不太清楚您想要实现什么。感谢您使其更易于阅读,因为它在输出中的字段顺序不同,最好使用OFS
,而不是多次重复空格字符,但它可以工作,所以+1@Birei这是一个很好的观点,但可以我觉得它不能与printf$i,
一起使用。你会怎么做?对我来说不起作用,但这可能与这个巨大的文件有关。无论如何,谢谢你。