2015-10-15 51 views
1

我想将STATUS:CONFIRMED更改为<STATUS>CONFIRMED</STATUS>使用sed有可能吗?我可以使用此命令已更改BEGIN:VEVENT<VEVENT>使用Sed Unix将文件内容更改为XML

sed -i 's|BEGIN:VEVENT|<VEVENT>|g' nameoffile.html 

但我不能找到一种方法来做出改变STATUS:CONFIRMED

+0

显示一些输入数据。 http://stackoverflow.com/help/mcve和http://stackoverflow.com/help/how-to-ask –

+0

另外,请阅读http://stackoverflow.com/help/someone-answers –

回答

0

为什么不应该这样工作:

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> 
+0

注意,格式不正确正在隐藏一些XML的东西。 – choroba

+0

我的帖子已被编辑,我想要的是有确认 作为结果 – Sam

+0

@Sam是的,我相应地修改了我的答案! –