我有一个文件,其中的行标题包含以下模式(制表符分隔)
1.mapped.bam 2.mapped.bam 3.mapped.bam ....
我想要
SAMPLE_1 SAMPLE_2 SAMPLE_3 .....
我尝试过:
sed -r 's/([0-9])(.mapped.bam)/SAMPLE_\1/g
但是得到了
1SAMPLE_1 2SAMPLE_2 3SAMPLE_3 ???
答案 0 :(得分:1)
您可以使用以下POSIX ERE解决方案:
sed -E 's/([0-9]+)\.mapped\.bam/SAMPLE_\1/g'
等效的BRE POSIX解决方案是
sed 's/\([0-9][0-9]*\)\.mapped\.bam/SAMPLE_\1/g'
在这里
([0-9]+)
-第1组(后来在RHS中用\1
占位符表示,替换模式):一位或多位数字\.mapped\.bam
-文字.mapped.bam
子字符串。请注意,在POSIX BRE和ERE中,都必须对括号表达式之外的点进行转义以匹配文字点,并且必须以POSIX BRE风格对捕获括号进行转义。