簡體   English   中英

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

[英]How to rename multiple columns in multiple files?

我有多個文件,看起來像這樣:

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

我猜你真的想要這個:

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

_[^\\t]*因為它是TAB分隔的,所以從_開始到TAB之前(或行尾)是要刪除的東西。
g標志是替換所有出現的行。
1是限制在第一線更換-標題行。

你自己ubstitude 命令's/[_].*$//' ,是從第一個_到行尾替換,所以它最終只剩下一個標題。

您需要的 sed 命令是:

sed -ri 's/_\S*//g'

無論每行有多少列,此正則表達式都會刪除每個單詞的一部分,從下划線開始直到下一個空格或制表符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM