使用Sed Unix将文件内容更改为XML
问题描述:
我想将STATUS:CONFIRMED
更改为<STATUS>CONFIRMED</STATUS>
使用sed有可能吗?我可以使用此命令已更改BEGIN:VEVENT
到<VEVENT>
:使用Sed Unix将文件内容更改为XML
sed -i 's|BEGIN:VEVENT|<VEVENT>|g' nameoffile.html
但我不能找到一种方法来做出改变STATUS:CONFIRMED
答
为什么不应该这样工作:
sed -i "s|STATUS:CONFIRMED|<STATUS>CONFIRMED</STATUS>|g" nameoffile.html
测试和working:
bash-4.3$ cat > example
begin:vevent
status:confirmed
bash-4.3$ sed -i "s|status:confirmed|<status>confirmed</status>|g" example
bash-4.3$ tail example
begin:vevent
<status>confirmed</status>
bash-4.3$ sed --version
sed (GNU sed) 4.2.2
I double checked and实际上在上一个命令中不需要转义任何字符。
可能存在与输入数据有关的问题,可能有助于向我们提供有关要更改的输入的更多信息。
编辑
如果要概括的方法来任何其他的“状态”类型,你可以使用捕获组:
sh-4.3$ tail example
begin:vevent
status:unknown
sh-4.3$ sed "s|status:\(\w+\)|<status>\1</status>|g" example
begin:vevent
<status>unknown</status>
显示一些输入数据。 http://*.com/help/mcve和http://*.com/help/how-to-ask –
另外,请阅读http://*.com/help/someone-answers –