我想使用 sed 将这个字符串包含在文件的第 115 行。然而,它总是抱怨一些未知的命令。我在其他问题中遵循了其他解决方案,但尚未解决。
sed '115"<"img src="\.\/index_files\/Logo\.png" width="200" height="160" align="right" border="0">"' index.html > test.html
谢谢!
答案1
因为"
不是sed
命令。正如错误消息中所说,尽管不是很清楚。
地址后面115
必须跟一个sed
命令,可能是i
- 然后去掉一些
"
s。周围<
和之后的>
- 然后不要转义
/
s,它们不需要转义。 - 然后不要转义任何内容,因为
i
命令只接受文本。
这给我们留下了:sed '115 i <img src="./index_files/Logo.png" width="200" height="160" align="right" border="0">'
答案2
用户 richard 很好地描述了您的命令有什么问题sed
,并且还提供了正确的编辑脚本来执行您正在尝试的操作。
我提供了一种适用于多种不同情况的替代方法:
该sed
命令r
将在数据流中的当前位置插入文件的内容。
你的sed
命令行可以被写
$ sed '115r /dev/stdin' index.html <data.in
sed '115r data.in' index.html
如果您想要在第 115 行之后插入的数据存储在文件中data.in
,这将具有与...相同的效果。
/dev/stdin
是一个特殊文件,其中包含通过标准输入发送的所有内容。
你也可以这样做(使用支持“here-strings”的 shell):
$ sed '115r /dev/stdin' index.html <<<"my string of stuff"
或者
$ sed '115r /dev/stdin' index.html <<<"$myvariableofwonder"
显然,这对于来自其他命令的管道也按预期工作:
$ sed -n '1,10p' myfile | sed '115r /dev/stdin' index.html
这会将 1 到 10 行移植myfile
到index.html
第 115 行。