我有一个看起来像下面的文件(简化),我正尝试从一个字符串替换到该行的末尾。在这种情况下,我试图替换行的最后一个冒号和行的末尾之间的所有内容。
之前
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
答案 0 :(得分:3)
您可以这样做:
sed 's/:[^:]*$/:1/'
[^:]
匹配任何非-字符,并且$
将匹配项锚定到行尾。