Sed替换多行中从x到y的内容

问题描述 投票:-1回答:1

我有以下文件:

2020-04-17 10:35:08.339       msw_im.c   wync_ua[0]DEBUG:  .mark1: lorem ipsum
dolor sit amet, consetetur sadipscing elitr, sed diam 
nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren

2020-04-17 10:35:08.340

我想这样替换“ mark1:”和“ 2020-04-17 10:35:08.340”之间的每个字符

2020-04-17 10:35:08.339       msw_im.c   wync_ua[0]DEBUG:  .mark1: xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
xxxxx
xxxxxxxx
xxxxxxx

2020-04-17 10:35:08.340

我该怎么做?我试过了:

$: sed -i '/mark1/,/^$/{s/./x/g}' file

有效,但也将第一行的开头替换为“ x”。我尝试了其他一些没有成功的事情。有什么主意吗?

sed replace multiline marker
1个回答
0
投票

使用GNU sed:

sed -E -i '/mark1:/,/^$/{ /mark1:/{ :a;s/(mark1:x*)[^x]/\1x/;ta;b }; s/./x/g }' file

输出到文件:

2020-04-17 10:35:08.339 msw_im.c wync_ua [0]调试:.mark1:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2020-04-17 10:35:08.340

请参阅:man sedThe Stack Overflow Regular Expressions FAQ

© www.soinside.com 2019 - 2024. All rights reserved.