Замяна на всички появявания на символ след N-то срещане във всеки ред на файл в UNIX

Да предположим, че имам документ, в който всички редове са форматирани по следния начин:

1;23;3453;12312;32423;qwrewre;werwer
ert1;23;jdkj;seiuryy8743;874w65;hjfd;1234
df;23;3453;12312;sdjh;qwrewre;werwer

Как да използвам sed, за да заменя всичко след 2-ро срещане на точка и запетая(;) с тръбна черта(|), така че документът да изглежда така:

1;23;3453|12312|32423|qwrewre|werwer
ert1;23;jdkj|seiuryy8743|874w65|hjfd|1234
df;23;3453|12312|sdjh|qwrewre|werwer

Опитах да използвам sed 's/;/|/19g, но това замени всички точки и запетая с тръба.

Благодаря за помощта предварително.


person user3362729    schedule 27.02.2014    source източник


Отговори (1)


По този начин:

$ echo '1;23;3453;12312;32423;qwrewre;werwer' | sed 's/;/|/3g'
1;23;3453|12312|32423|qwrewre|werwer
person jaypal singh    schedule 27.02.2014
comment
Много по-добре от моя отговор! Не знаех, че можете да посочите кой мач да започне по този начин. - person Andrew Clark; 28.02.2014