提问者:小点点

替换文件中特定行号处的字符


我有index.html文件

我需要这样的第88行:

Test Page 1

如下所示:

Test Page 10

尝试了基本程序,如:

sed -i '88s/1/10' index.html

sed -i ‘88|\(.*\)|                 <h1>Test Page 10</h1>\1|' index.html

但似乎html标签需要不同的处理方式?


共1个答案

匿名用户

我在t.html中填充了100行相同的内容(每行仅为

测试页1

。在本演示中,我使用nl t.html grep 88;显示第88行。(nl只对每行进行编号,而grep搜索要匹配的正则表达式,但88只匹配文本88)。我在命令的开头和结尾运行它,以显示更改前后的第88行。

$ nl t.html | grep 88; sed -i -e '88 s/Page 1/Page 10/' t.html; nl t.html | grep 88
    88  <h1>Test Page 1</h1>
    88  <h1>Test Page 10</h1>

您必须小心使用正则表达式--如果您只是使用s/1/10/,它将替换第一个h1中的1,而不是页面1中的1