在UNIX中的文件的每一行中,在第N次出现后替换所有出现的字符

时间:2014-02-27 23:29:24

标签: string unix replace sed character

假设我有一个文档,其中所有行的格式都是这样的:

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

如何使用sed将第二次出现的分号(;)替换为竖线(|),以便文档看起来像:

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

我尝试使用sed 's/;/|/19g但是用管道替换了所有的分号。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

通过这样做:

$ echo '1;23;3453;12312;32423;qwrewre;werwer' | sed 's/;/|/3g'
1;23;3453|12312|32423|qwrewre|werwer