需要从文件中删除字符串 chr 和 % 符号

Need to remove the string chr and the % sign from the file

我有一个如下所示的文件

chrM    152 165 45  21.43%
chrM    13811   324 70  17.77%
chr1    1669566 47  14  22.95%
chr1    1685929 144 33  18.64%

我想从文件中删除字符串 chr% 符号。这是一个 tab 分隔文件。我应该如何使用这里的 sed 命令?

我的输出应该是:

M   152 165 45  21.43
M   13811   324 70  17.77
1   1669566 47  14  22.95
1   1685929 144 33  18.64

如果 % 是行中的最后一个字符,这在 sed 中很简单:

sed 's/^chr//; s/%$//' file

第一个命令从行首删除 chr,第二个命令从行尾删除 %

如果您喜欢使用 OR 运算符,也可以组合这两个命令:

sed 's/^chr\|%$//g'

匹配两种模式中的任何一种 - 在这种情况下,我们还需要全局修饰符 g 以便可以对同一行进行两种修改。 | 运算符使用 \ 进行转义。

要就地编辑文件,可以使用 -i 开关(如果有的话),或者使用标准技巧:

sed 's/^chr\|%$//g' file > tmp && mv tmp file

您可以使用 sed 或 perl。

sed 's/^chr\|%$//g' file

由于基本 sed 使用 BRE(基本正则表达式),正则表达式或运算符用 \|.

表示

通过 perl。

perl -pe  's/^chr|%$//g' file