Что такое выражение sed для замены всех вхождений ": {любой символ} {конец строки}" в файле? - PullRequest
0 голосов
/ 26 января 2019

У меня есть файл, который выглядит следующим образом (упрощенно), и я пытаюсь заменить одну строку до конца строки.В этом случае я пытаюсь заменить все между самым последним двоеточием строки и концом строки.

ДО

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 голосов
/ 26 января 2019

Вы можете сделать это следующим образом:

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

[^:] соответствует любому не-символу и $ привязывает совпадение к концу строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...