删除文件中的字母数字后缀

时间:2016-09-19 17:06:08

标签: awk sed pattern-matching suffix

我有一些行在文件的第4列中有ID,以':E1'结尾。 (我想删除这些第4列专门结尾的行:E1不是:E11或:E10等)。当我做grep时,我得到了87行具有该模式

    grep "\:E1\b" File | wc -l
    87

但是当我这样做时

    sed '/:E1$/d' File > tmp
    wc -l File
    245797 File 
    wc -l tmp
    245797 tmp

与原始文件长度相同,表示模式以:E1结尾的行未被删除。在理解命令时我哪里出错了? 该文件看起来像这样

chr1    133374  133566  ENSG00000238009:E1  -   ENSG00000238009 1
chr1    995083  995226  ENSG00000217801:E1  +   ENSG00000217801 1
chr1    1385294 1385499 ENSG00000215915:E1  +   ENSG00000215915 1
chr1    10003388    10003465    ENSG00000162441:E1  -   ENSG00000162441 1
chr1    38273332    38273352    ENSG00000197982:E1  +   ENSG00000197982 1

我想删除以第4列中的E1结尾的行

2 个答案:

答案 0 :(得分:2)

我想删除以第4列中的E1结尾的行

$ awk '$4 !~ /:E1$/' foo
$

答案 1 :(得分:1)

在第(:E1行)处搜索$并替换为空:

sed 's/:E1$//' File