特定文本替换
本帖最后由 greenandtree 于 2011-04-14 21:14 编辑
linux系统中我想修改某个文件,文件内容有三行,大致如下:
dynamic modulename1 0 dynamic modulename1 0
dynamic modulename1 1 dynamic modulename1 2
dynamic modulename1 1 dynamic modulename1 2
dynamic modulename1 3 dynamic modulename1 3
由于文件数量较多,请问怎么使用脚本把第二行的dynamic modulename1 1 dynamic modulename1 2
修改成dynamic modulename1 1 dynamic modulename1 1(第三行的不变)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
假设源文件名为:test.txt
编写脚本modify.sed:
#!/bin/sed -f
#replace.sed
2 \c
dynamic modulename1 1 dynamic modulename1 1
执行:modify.sed test.txt
这样应该可以
这样也可以,
sed -i '2s/.*/dynamic modulename1 1 dynamic modulename1 1/' test.txt
如果文字太长,可以用变量替换
回复 2# talang_408
有些不理解 您能不能再详细一点做个注释
你是要修改一个文件呢,还是要修改多个文件,不然为什么要说文件数量较多
先纠正一下,应该是2 c\
#!/bin/sed -f ----引用了bin下的sed命令
2 c\ ------意思是要修改第二行的内容
....... -------这是修改后的内容
回复 2# talang_408
我想把文件中的第12行:
dynamic */usr/.so.0.0.0:XmlGenerater() "--holdnum 4000 --timeout 1 --threadnum 1 --conffile /etc/pr300.conf"
替换成:dynamic */usr/.so.0.0.0:XmlGenerater() "--holdnum 1--timeout 1 --threadnum 4 --conffile /etc/pr300.conf"
我尝试了你上面的命令是不行的
回复 1# greenandtree
sed '2s/2/1/g' :第一个2为行数!
谢谢啊