求教关于sed的多行替换

有个文件PlainTextcode?123456789<aa>0.01</aa><aa>0.010.010.010.01</aa>现在想用sed,或其他,linux命令,... 有个文件

Plain Text code?

1
2
3
4
5
6
7
8
9

<aa>
0.01
</aa>
<aa>
0.01
0.01
0.01
0.01
</aa>

现在想用sed,或其他,linux命令,将

Plain Text code?

1
2
3

<aa>
0.01
</aa>

中的0.01替换为0.0001,而保持

Plain Text code?

1
2
3
4
5
6

<aa>
0.01
0.01
0.01
0.01
</aa>

不变。

求教高手命令应该如何写?
谢谢!
展开
 我来答
良玉小帝
2015-11-14 · 个人日常精心汇总合集
良玉小帝
采纳数:5925 获赞数:9451

向TA提问 私信TA
展开全部
sed ':a;N;$!ba;s/0.01/0.0001/g' file

:a 创建一个labela

N 将下一行读入到模式空间
$! 如果不是最后一行,ba跳转到label a处
s/0.01/0.0001/ 替换0.01为0.0001,只替换一次

步骤1-3(即:a;N;$!ba;)就是为了将file全部内容读到模式空间中,然后再进行替换,这样替换就只会做一次。
追问
这个经测试达不到要求啊,所有的0.01都会被替换
[root@li1182-134 ~]# cat 1.txt

0.01

0.01
0.01
0.01
0.01

[root@li1182-134 ~]# sed ':a;N;$!ba;s/0.01/0.0001/g' 1.txt

0.0001

0.0001
0.0001
0.0001
0.0001
追答
sh-3.2# cat 1|sed '1,/0.01/s/0.01/0.0001/'

0.0001

0.01
0.01
0.01
0.01
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式