我有一个类似于下面示例的文本文件。
我要插入
<string>insert-me</string>
在指示的行。
我该怎么做?我尝试了与此类似的变体:
sed "/s/<key>first</key>/\n <array>/\n/test/g" test.txt
而且我不断收到“替代命令中的错误标志”错误。
谢谢
示例文本文件:
<record>
<key>first</key>
<array>
--I want to insert the line here--
<string>hello</string>
<string>world</string>
</array>
</record>
<record>
<key>second</key>
<array>
<string>its</string>
<string>me</string>
<string>again</string>
<string>hello</string>
<string>world</string>
<string>again</string>
</array>
</record>
这里有几个问题(除了尝试使用正则表达式工具解析结构化数据的一般问题之外)
如果您的模式(或替换)包含斜线,那么您需要为 sed 命令使用不同的分隔符,或者转义斜线
sed(通常)是面向行的,所以你不能跨行边界匹配,除非你将额外的行拉到模式空间中
N
匹配特定数量的空白将使整个事情变得更加脆弱
所以例如你可以这样做:
或者(更自然地)使用append而不是s替代