0

我是新手,我想用 sed 替换“特殊”字符。我有一个 xml 文件,它的格式不正确,并且在任何数据行的末尾都以“>”结尾,我需要废弃它并为此我需要用“/>”更改“>”。但是当我尝试时:

sed -i s/>//>/g FILE

return => -bash: //: 是一个目录

与:

sed -i s/>/\/>/g FILE

也与

sed -i s,>,\>,g FILE

手册页不能解决这个问题。

有人面临这个问题吗?

4

2 回答 2

2

如果您使用它作为分隔符,您应该转义斜杠字符:

sed 's/>/\/>/g'

或使用另一个字符,例如:

sed 's_>_/>_g'

请注意,这将替换文件中的所有匹配项,而不仅仅是最后一个

如果您只想匹配>不以 开头/,则可以使用以下命令:

sed -r 's_[^/]>_/>_g' file
于 2013-08-28T18:49:17.797 回答
0

sed -i 's/>$//>/g' FILE 对你有用吗?

$ echo "<blah> <blah>" | sed 's/>$/\/>/g'
<blah> <blah/>
于 2013-08-28T18:51:57.367 回答