我有一个如下所示的文件
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
答案 0 :(得分:3)
您可以使用sed或perl。
sed 's/^chr\|%$//g' file
由于基本sed使用BRE( Basic Regular expression ),因此regex OR运算符由\|
表示。
通过perl。
perl -pe 's/^chr|%$//g' file
答案 1 :(得分:2)
如果%
是该行的最后一个字符,这在sed中很简单:
sed 's/^chr//; s/%$//' file
第一个命令从行的开头删除chr
,第二个命令从结尾删除%
。
如果您想使用OR运算符,也可以组合这两个命令:
sed 's/^chr\|%$//g'
两种模式中的任何一种匹配 - 在这种情况下,我们还需要全局修饰符g
,以便可以对同一行进行两种修改。 |
运算符使用\
进行转义。
要编辑文件,您可以使用-i
开关(如果有),或执行标准技巧:
sed 's/^chr\|%$//g' file > tmp && mv tmp file