[英]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.