用于替换文件中所有出现的“:{any character} {line of end}”的sed表达式是什么?

时间:2019-01-25 23:01:48

标签: regex sed replace

我有一个看起来像下面的文件(简化),我正尝试从一个字符串替换到该行的末尾。在这种情况下,我试图替换行的最后一个冒号和行的末尾之间的所有内容。

之前

GT:DP:ADALL:AD:GQ:IGT:IPS:PS    0|1:746:196,213:0,0:903:0/1:.:113535
GT:DP:ADALL:AD:GQ:IGT:IPS:PS    0|1:746:196,213:0,0:903:0/1:.:PATMAT

之后

GT:DP:ADALL:AD:GQ:IGT:IPS:PS    0|1:746:196,213:0,0:903:0/1:.:1
GT:DP:ADALL:AD:GQ:IGT:IPS:PS    0|1:746:196,213:0,0:903:0/1:.:1

基于类似的问题,如果行中只有一个冒号,我知道sed表达式将是以下内容,但是我不确定如何指定行的最后一个冒号:

sed 's/:.*/1/' file.txt

1 个答案:

答案 0 :(得分:3)

您可以这样做:

sed 's/:[^:]*$/:1/'

[^:]匹配任何非-字符,并且$将匹配项锚定到行尾。