使用Sed Unix将文件内容更改为XML

时间:2015-10-15 19:57:26

标签: xml unix sed

我想使用sed将STATUS:CONFIRMED更改为<STATUS>CONFIRMED</STATUS>是否可能?我已经可以使用以下命令将BEGIN:VEVENT更改为<VEVENT>

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

但我无法找到改变方法STATUS:CONFIRMED

1 个答案:

答案 0 :(得分:0)

为什么不能这样做:

sed -i "s|STATUS:CONFIRMED|<STATUS>CONFIRMED</STATUS>|g" nameoffile.html

经过测试和工作:

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                                                                                                                                                                                                       

我仔细检查过,实际上没有必要在前一个命令中转义任何字符。

可能存在与输入数据有关的问题,可能有助于我们提供有关您要更改的输入的更多信息。

修改

如果您想将方法概括为任何其他“状态”类型,您可以使用捕获的组:

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>