如何重命名多个文件中的多个列?

动画

我有多个看起来像这样的文件:

trans_ENSG00000047849.txt.traw
trans_ENSG00000047848.txt.traw
trans_ENSG00000047847.txt.traw
...

在它们中,我大约有300列,列名看起来像这样:

NA20826_NA20826 NA20828_NA20828 NA20819_NA20819

我希望所有文件中的列名都采用这种形式:

NA20826 NA20828 NA20819

换句话说,我想删除每个列名和每个文件中下划线_之后的所有内容。

我应该提到的是,每个文件的开头都有一个制表符空间。

我尝试了这个:

sed -ri 's/[_].*$//' trans_*.txt.traw

但是当我尝试在RI中打开这些转换的文件之一时,出现此错误:

> e=read.table("trans_ENSG00000135541.txt.traw", header=TRUE)
Error in read.table("trans_ENSG00000135541.txt.traw", header = TRUE) : 
  more columns than column names
w

我猜你实际上想要这个:

$ echo -e "\tNA20826_NA20826\tNA20828_NA20828\tNA20819_NA20819" | sed -r '1s/_[^\t]*//g'
        NA20826 NA20828 NA20819

_[^\t]*因为它是TAB分开的,所以要删除从(_TAB行尾)的开始。
g标志是替换所有出现的行。
首先1是将替换限制在第一行-标题行中。

您自己substitude命令's/[_].*$//'是从第一行_到行尾进行替换,因此最终将只剩下一个标题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章