我在文件的第三行有<host></host>
。我想用<host>my_dB</host>
替换它。如何使用sed
来做到这一点。我想在第4,5和6行做这样的替换。替换线的范围
<host></host>
<host>my_dB</host>
我在文件的第三行有<host></host>
。我想用<host>my_dB</host>
替换它。如何使用sed
来做到这一点。我想在第4,5和6行做这样的替换。替换线的范围
<host></host>
<host>my_dB</host>
每个人都可以用类似于这样做:
sed -i "s/<host><\/host>/<host>my_db<\/host>/" foo.txt
的-i
意味着它会覆盖就地文件。删除该标志以将更改写入标准输出。
如果这是一个常规任务来填写文件的详细信息,请考虑在文件中添加锚以使其更容易。例如:
<host>DB_HOST</host>
然后sed的将只是需要:
sed -i 's/DB_HOST/my_db/'
我正在使用-i选项,谢谢你.. – Linda 2013-03-11 10:14:56
像这样:
$ sed '3,6 s/<host>/<host>my_dB/' file
演示:
$ cat file
1: <host></host>
2: <host></host>
3: <host></host>
4: <host></host>
5: <host></host>
6: <host></host>
7: <host></host>
$ sed '3,6 s/<host>/<host>my_dB/' file
1: <host></host>
2: <host></host>
3: <host>my_dB</host>
4: <host>my_dB</host>
5: <host>my_dB</host>
6: <host>my_dB</host>
7:
保存变更回原来的文件然而,你真的应该使用XML解析器使用-i
选项
$ sed -i '3,6 s/<host>/<host>my_bd/' file
。深入分析XML与regexp
是一个坏主意。
标题索要线'3-6'进行修改,但问题只要求'3-5'?应该清楚如何改变给定答案的范围。 – 2013-03-11 10:18:12
我忘记指定6。原谅我..苏尔简短明了,谢谢 – Linda 2013-03-11 10:28:50