通过在特定位置添加前缀来编辑文件

时间:2014-10-22 14:32:54

标签: regex bash unix sed

我有一个看起来像这样的文件:

fixedStep chrom=20 start=1 step=1000   
0   
10   
20   
100   
0  
fixedStep chrom=19 start=1 step=1000   
0   
0   
50   
330   
450   
0

我想在chr之后的数字中添加前缀chrom=。因此,我希望拥有chrom=20chrom=19,而不是chrom=chr20chrom=chr20。所以文件应该如下所示:

fixedStep chrom=chr20 start=1 step=1000   
0   
10   
20   
100   
0  
fixedStep chrom=chr19 start=1 step=1000   
0   
0   
50   
330   
450   
0

我知道使用sed命令我可以做到这一点,但我不知道如何构建一个找到regex部分的chrom=。我已经使用sed来修改简单的事情,比如在文件的每一行的开头添加前缀;但我无法围绕这个问题思考!

2 个答案:

答案 0 :(得分:4)

您可以使用此sed命令:

sed 's/\(chrom=\)/\1chr/g' file
fixedStep chrom=chr20 start=1 step=1000
0
10
20
100
0
fixedStep chrom=chr19 start=1 step=1000
0
0
50
330
450
0

\(chrom=\)搜索chrom=并将其捕获到第1组,以便用于替换模式\1chr

或者更简单:

sed 's/chrom=/&chr/g' file

答案 1 :(得分:1)

sed 's/chrom=/chrom=chr/' filename

输出:

fixedStep chrom=chr20 start=1 step=1000   
0   
10   
20   
100   
0  
fixedStep chrom=chr19 start=1 step=1000   
0   
0   
50   
330   
450   
0